Java学习第四十四天<集合章节作业><泛型引出><泛型说明及细节><泛型应用><自定义泛型><泛型继承和通配><泛型章节作业>

本文主要是介绍Java学习第四十四天<集合章节作业><泛型引出><泛型说明及细节><泛型应用><自定义泛型><泛型继承和通配><泛型章节作业>,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

集合章节作业

package chapter17.Homework;
​
import com.sun.deploy.security.MozillaJSSNONEwithRSASignature;
​
import java.util.ArrayList;
​
public class Homework01 {public static void main(String[] args) {ArrayList arrayList = new ArrayList();arrayList.add(new news("新闻一:新冠确诊病例超千万,数百万印度教徒赴恒河“圣浴”引民众担忧"));arrayList.add(new news("新闻二:男子突然想起2个月前钓的鱼还在网兜里,捞起一看赶紧放生"));for (int i = arrayList.size()-1; i >=0 ; i--) {news n=(news)arrayList.get(i);//拿到getTitle要转型System.out.println(progress(n.getTitle()));}
​}//专门写一个方法处理新闻public static String progress(String title){if (title==null){return "";}if (title.length()>15){return title.substring(0,15)+"...";}else {return title;}}
}
class news{private String title;private String text;
​public news(String title) {this.title = title;}
​public String getTitle() {return title;}
​@Overridepublic String toString() {return "news{" +"title='" + title + '\'' +'}';}
}

package chapter17.Homework;
​
import java.util.ArrayList;
​
public class Homework02 {public static void main(String[] args) {ArrayList arrayList = new ArrayList();arrayList.add(new Car("xx",2666));arrayList.add(new Car("yy",2686));arrayList.add(new Car("zz",26626));arrayList.add(new Car("tt",266));arrayList.remove(2);System.out.println(arrayList.size());
​arrayList.addAll(arrayList);System.out.println(arrayList.containsAll(arrayList));//查找多个元素是否都存在for (Object o :arrayList) {System.out.println(o);}arrayList.removeAll(arrayList);//相当于清空System.out.println(arrayList.isEmpty());}
}
class Car{private String name;private int prize;
​public Car(String name, int prize) {this.name = name;this.prize = prize;}
​@Overridepublic String toString() {return "Car{" +"name='" + name + '\'' +", prize=" + prize +'}';}
}

package chapter17.Homework;
​
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
​
public class Homework03 {public static void main(String[] args) {Map m = new HashMap();m.put("j",650);m.put("t",1200);m.put("s",2900);System.out.println(m);m.replace("j",2600);
​Set set = m.entrySet();for (Object o :set) {Map.Entry m2=(Map.Entry)o;
​System.out.println(m2.getKey()+"-"+((int)m2.getValue()+100));//本来是object 要向下转型}
​
​}
}

package chapter17.Homework;
​
import java.util.TreeSet;
​
public class Homework04 {public static void main(String[] args) {TreeSet treeSet = new TreeSet();treeSet.add(new Person());treeSet.add(new Person());treeSet.add(new Person());treeSet.add(new Person());System.out.println(treeSet);
/*final int compare(Object k1, Object k2) {return comparator==null ? ((Comparable<? super K>)k1).compareTo((K)k2)  底层会把Person转成Comparable报错 String类实现了Comparable不会报错: comparator.compare((K)k1, (K)k2);}*/}
}
class Person implements Comparable{
​@Overridepublic int compareTo(Object o) {return 0; //所有加进去的对象都会返回0,不会添加}
}

package chapter17.Homework;
​
import java.util.HashSet;
import java.util.Objects;
​
public class Homework05 {public static void main(String[] args) {HashSet set = new HashSet();Persons p1 = new Persons(1001, "AA");Persons p2 = new Persons(1002, "BB");set.add(p1);set.add(p2);p1.name="CC";//修改了属性,但哈希值不变,索引不变set.remove(p1);//删的是 1001 CC的索引 删不到 p1System.out.println(set);set.add(new Persons(1001,"CC"));//加的是没删成的位置System.out.println(set);set.add(new Persons(1001,"AA"));//还是在p1的位置,因为属性不一样,会挂在修改后p1 1001 CC 后面System.out.println(set);}
}
class Persons{private int num;public String name;
​public Persons(int num, String name) {this.num = num;this.name = name;}
​@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Persons persons = (Persons) o;return num == persons.num && Objects.equals(name, persons.name);}
​@Overridepublic int hashCode() {return Objects.hash(num, name);}
​@Overridepublic String toString() {return "Persons{" +"num=" + num +", name='" + name + '\'' +'}';}
}

泛型引出

package chapter18;
​
import java.util.ArrayList;
//泛型的引出
public class Generic01 {public static void main(String[] args) {ArrayList arrayList = new ArrayList();arrayList.add(new Dog("xx",10));arrayList.add(new Dog("yy",1));arrayList.add(new Dog("zz",5));// arrayList.add(new Cat("tt",6));
​for (Object o :arrayList) {//传统方法 需转型效率低Dog d=(Dog) o;//若不小心添了一个猫类会异常System.out.println(d.getName()+"-"+d.getAge());}
​}
}
class Dog{private String name;private int age;
​public Dog(String name, int age) {this.name = name;this.age = age;}
​public String getName() {return name;}
​public int getAge() {return age;}
}
class Cat{private String name;private int age;
​public Cat(String name, int age) {this.name = name;this.age = age;}
​public String getName() {return name;}
​public int getAge() {return age;}
}

package chapter18;
​
import java.util.ArrayList;
​
public class Generic02 {public static void main(String[] args) {ArrayList<Dog2> arrayList = new ArrayList<Dog2>();//只能存放Dog2 遍历时候可直接取Dog2类 不是object类arrayList.add(new Dog2("xx",10));arrayList.add(new Dog2("yy",1));arrayList.add(new Dog2("zz",5));//  arrayList.add(new Cat2("tt",6));
​for (Dog2 o :arrayList) {//少了转换System.out.println(o.getName()+"-"+o.getAge());}}
}
class Dog2{private String name;private int age;
​public Dog2(String name, int age) {this.name = name;this.age = age;}
​public String getName() {return name;}
​public int getAge() {return age;}
}
class Cat2{private String name;private int age;
​public Cat2(String name, int age) {this.name = name;this.age = age;}
​public String getName() {return name;}
​public int getAge() {return age;}
}

泛型说明及细节

package chapter18;
​
public class Generic03 {public static void main(String[] args) {Person<String> xx = new Person<>("xx"); // Person类中所有E>Stringxx.show();//class java.lang.StringPerson<Integer> yy = new Person<>(100);yy.show();//class java.lang.Integer
​}
}
class Person<E>{E s;//定义Person对象时候指定的数据类型,编译期间知道是什么类型
​public Person(E s) {//可作为参数类型this.s = s;}public E f(){//可作为返回类型return  s;}public void show(){System.out.println(s.getClass());}
}

package chapter18;
​
import java.util.ArrayList;
​
public class GenericDetail {public static void main(String[] args) {Mig<A> aMig = new Mig<A>(new A());//E 为A类型Mig<A> aMig1 = new Mig<>(new B());//可传A的子类 右边<>可简写 左边<>不写默认object类aMig.show();//A 运行类型aMig1.show();//B
​
​}
}
class A{}
class B extends A{}
class Mig<E>{E s;
​public Mig(E s) {this.s = s;}public void show(){System.out.println(s.getClass());}
}

泛型应用

package chapter18;
​
import java.util.*;
​
public class GenericExercise {public static void main(String[] args) {HashMap<String, Student> hashMap = new HashMap<>();hashMap.put("xx",new Student("xx",55));hashMap.put("yy",new Student("yy",56));hashMap.put("zz",new Student("zz",57));Set<Map.Entry<String, Student>> entries = hashMap.entrySet();Iterator<Map.Entry<String, Student>> iterator = entries.iterator();while (iterator.hasNext()) {Map.Entry<String, Student> next =  iterator.next();System.out.println(next.getKey()+"-"+next.getValue());}HashSet<Student> set = new HashSet<>();set.add(new Student("jj",12));set.add(new Student("jg",13));set.add(new Student("jk",14));for (Student student :set) {System.out.println(student);}
​
​}
}
class Student{private String name;private int age;
​public Student(String name, int age) {this.name = name;this.age = age;}
​@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}
}

package chapter18;
​
import java.util.ArrayList;
import java.util.Comparator;
​
public class GenericExercise02 {public static void main(String[] args) {Employee xx = new Employee("xx", 25, new Employee.MyDate(2008, 12, 24));Employee yy = new Employee("kk", 25, new Employee.MyDate(2005, 16, 21));Employee kk = new Employee("kk", 25, new Employee.MyDate(2055, 16, 21));Employee zz = new Employee("zz", 25, new Employee.MyDate(2018, 13, 2));ArrayList<Employee> employees = new ArrayList<>();employees.add(xx);employees.add(yy);employees.add(kk);employees.add(zz);System.out.println(employees);System.out.println("排序后");employees.sort(new Comparator<Employee>() {@Overridepublic int compare(Employee o1, Employee o2) {if (!(o1 instanceof Employee&&o2 instanceof Employee)){//加验证System.out.println("类型不对");return 0;}int i=o1.getName().compareTo(o2.getName());if (i!=0){return i;}else {return o1.birthday.compareTo(o2.birthday);}
​
​};});System.out.println(employees);
​
​}
}
class Employee{private String name;private double sal;MyDate birthday;static class MyDate implements Comparable<MyDate>{//对年月日的比较进行封装 泛型对应下边private int year;private int month;private int date;
​public MyDate(int year, int month, int date) {this.year = year;this.month = month;this.date = date;}
​public int getYear() {return year;}
​public int getMonth() {return month;}
​public int getDate() {return date;}
​@Overridepublic String toString() {return "MyDate{" +"year=" + year +", month=" + month +", date=" + date +'}';}
​@Overridepublic int compareTo(MyDate o) {//对年月日的比较进行封装 //泛型显示MyDate//如果名字相同,比较生日int j=year-o.getYear();if (j!=0){return j;}int k=month-o.getMonth();if (k != 0) {return k;}int g=date-o.getDate();return g;}}
​public Employee(String name, double sal, MyDate birthday) {this.name = name;this.sal = sal;this.birthday = birthday;}
​public String getName() {return name;}
​@Overridepublic String toString() {return "\nEmployee{" +"name='" + name + '\'' +", sal=" + sal +", birthday=" + birthday +'}';}
}

自定义泛型

自定义泛型类

package chapter18;
​
public class CustomGeneric {public static void main(String[] args) {
​}
}
class Tiger<R,M,T>{//自定义泛型类R r;M m;T t;
​public Tiger(R r, M m, T t) {this.r = r;this.m = m;this.t = t;}
​public void setR(R r) {this.r = r;}
​public void setM(M m) {this.m = m;}
​public void setT(T t) {this.t = t;}//T[] ts=new T[8];泛型数组不允许初始化 因为类型不同开辟空间未知//static R r2; 静态成员/属性方法与类一起加载,但对象还没创建,泛型还没指定,所以静态成员不能用泛型
​
}

自定义泛型接口

package chapter18;
​
public class CustomInterfaceGeneric {public static void main(String[] args) {
​}
}
interface Usb<U,R>{//U name="ss";接口成员都是静态性质R get(U u);//普通方法void hi(R r);void run(R r1,R r2,U u1,U u2);default R method(U u){//默认方法return null;}
}
interface IA extends Usb<String,Double>{//继承接口,指定泛型
​
}
class AA implements IA{//实现继承后的子类自动匹配类型
​@Overridepublic Double get(String s) {return null;}
​@Overridepublic void hi(Double aDouble) {
​}
​@Overridepublic void run(Double r1, Double r2, String u1, String u2) {
​}
}
class BB implements Usb<Integer,Float>{//直接实现也能匹配类型,不写默认object
​@Overridepublic Float get(Integer integer) {return null;}
​@Overridepublic void hi(Float aFloat) {
​}
​@Overridepublic void run(Float r1, Float r2, Integer u1, Integer u2) {
​}
}

自定义泛型方法

package chapter18;
​
public class CustomMethodGeneric {public static void main(String[] args) {Car car = new Car();car.fly("xx",100);//调用方法时,传参确定类型}
}
class Car{public void run(){//普通方法
​}public<T,R> void fly(T t,R r){//泛型方法System.out.println(t.getClass());System.out.println(r.getClass());//自动装箱变引用类型}/*public void swim(R r){  错误,不是泛型方法,且类名中没有指定R泛型
​}*/
}

泛型继承和通配

 

泛型章节作业

package chapter18;
​
import org.junit.jupiter.api.Test;
​
import java.util.*;
​
public class Homework01 {public static void main(String[] args) {
​}@Test//alt+enterpublic void test(){DAO<User> dao = new DAO<>();dao.save("001",new User(1,10,"jj"));dao.save("002",new User(2,18,"jk"));dao.save("003",new User(3,38,"jl"));List<User> list = dao.list();System.out.println(list);dao.update("003",new User(3,58,"op"));dao.delete("001");list=dao.list();//重新获取System.out.println(list);System.out.println(dao.get("002"));}
}
class DAO<T>{private Map<String,T> map=new HashMap<>();  //K-String V-T类对象
​public void save(String id,T entity){map.put(id, entity);}public T get(String id){return map.get(id);}public void update(String id,T entity){map.put(id, entity);}public List<T> list(){//遍历map[k-v] 将所有value(entity)封装到Arraylist返回List<T> list = new ArrayList<>();Set<String> keySet = map.keySet();for (String s :keySet) {list.add(get(s));//map.get(s)}return list;}public void delete(String id){map.remove(id);}
​
}
class User{private int id;private int age;private String name;
​public User(int id, int age, String name) {this.id = id;this.age = age;this.name = name;}
​public int getId() {return id;}
​public int getAge() {return age;}
​public String getName() {return name;}
​@Overridepublic String toString() {return "User{" +"id=" + id +", age=" + age +", name='" + name + '\'' +'}';}
}

这篇关于Java学习第四十四天<集合章节作业><泛型引出><泛型说明及细节><泛型应用><自定义泛型><泛型继承和通配><泛型章节作业>的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/251939

相关文章

Spring IOC的三种实现方式详解

《SpringIOC的三种实现方式详解》:本文主要介绍SpringIOC的三种实现方式,在Spring框架中,IOC通过依赖注入来实现,而依赖注入主要有三种实现方式,构造器注入、Setter注入... 目录1. 构造器注入(Cons编程tructor Injection)2. Setter注入(Setter

Java function函数式接口的使用方法与实例

《Javafunction函数式接口的使用方法与实例》:本文主要介绍Javafunction函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感... 目录引言-当代码遇见诗性一、函数式接口的生物学解构1.1 函数式接口的基因密码1.2 六大核心接口的形态学

Spring IOC控制反转的实现解析

《SpringIOC控制反转的实现解析》:本文主要介绍SpringIOC控制反转的实现,IOC是Spring的核心思想之一,它通过将对象的创建、依赖注入和生命周期管理交给容器来实现解耦,使开发者... 目录1. IOC的基本概念1.1 什么是IOC1.2 IOC与DI的关系2. IOC的设计目标3. IOC

Spring Boot统一异常拦截实践指南(最新推荐)

《SpringBoot统一异常拦截实践指南(最新推荐)》本文介绍了SpringBoot中统一异常处理的重要性及实现方案,包括使用`@ControllerAdvice`和`@ExceptionHand... 目录Spring Boot统一异常拦截实践指南一、为什么需要统一异常处理二、核心实现方案1. 基础组件

java中的HashSet与 == 和 equals的区别示例解析

《java中的HashSet与==和equals的区别示例解析》HashSet是Java中基于哈希表实现的集合类,特点包括:元素唯一、无序和可包含null,本文给大家介绍java中的HashSe... 目录什么是HashSetHashSet 的主要特点是HashSet 的常用方法hasSet存储为啥是无序的

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

IDEA运行spring项目时,控制台未出现的解决方案

《IDEA运行spring项目时,控制台未出现的解决方案》文章总结了在使用IDEA运行代码时,控制台未出现的问题和解决方案,问题可能是由于点击图标或重启IDEA后控制台仍未显示,解决方案提供了解决方法... 目录问题分析解决方案总结问题js使用IDEA,点击运行按钮,运行结束,但控制台未出现http://

解决Spring运行时报错:Consider defining a bean of type ‘xxx.xxx.xxx.Xxx‘ in your configuration

《解决Spring运行时报错:Considerdefiningabeanoftype‘xxx.xxx.xxx.Xxx‘inyourconfiguration》该文章主要讲述了在使用S... 目录问题分析解决方案总结问题Description:Parameter 0 of constructor in x

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

JSON字符串转成java的Map对象详细步骤

《JSON字符串转成java的Map对象详细步骤》:本文主要介绍如何将JSON字符串转换为Java对象的步骤,包括定义Element类、使用Jackson库解析JSON和添加依赖,文中通过代码介绍... 目录步骤 1: 定义 Element 类步骤 2: 使用 Jackson 库解析 jsON步骤 3: 添