package com.hrf.demo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
public class GenericityTest {
// 写集合的时候必须使用泛型
public static void main(String[] args) {
// 使用泛型,如果类型不匹配,会在编译器出现错误,如果不用泛型,不容易发现错误
// 采用泛型来改善自定义比较器
Person p1 = new Person("战三", 13);
Person p2 = new Person("李四", 11);
Person p3 = new Person("王五", 17);
// 2.集合,jdk1.8中前面写泛型,后面可以不用写
Set<Person> set = new TreeSet<>((x,y)->x.getAge()-y.getAge());
// 1.
// Set<Person> set = new TreeSet<>();
set.add(p1);
set.add(p2);
set.add(p3);
// 输出
System.out.println(set);
// 3.使用泛型操作map集合
Map<Integer, String> map = new HashMap<>();
map.put(1, "a");
map.put(2, "b");
// 输出
System.out.println(map);
// 4.List集合里面有Map集合,集合作为集合的元素类型
List<Map<String, Object>> list2 = new ArrayList<Map<String,Object>>();
// 创建map
Map<String, Object> map2 = new HashMap<>();
map2.put("1001", 1001);
list2.add(map2);
System.out.println(list2);
// 5.自定义泛型
// 使用是确定类型
Person<Integer> person = new Person<>();
person.setAge(12);
}
// 如果不知道age是什么类型可以用泛型Type,泛型的标志符没有限制,只有符合Java命名规范即可,最好和jdk的泛型标识一样
static class Person<T> {
private String name;
private T age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public T getAge() {
return age;
}
public void setAge(T age) {
this.age = age;
}
public Person() {
super();
}
public Person(String name, T age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}
// static class Person {
// private String name;
// private Integer age;
// public Person(String name, Integer age) {
// super();
// this.name = name;
// this.age = age;
// }
// public Person() {
// super();
// }
// public String getName() {
// return name;
// }
// public void setName(String name) {
// this.name = name;
// }
// public Integer getAge() {
// return age;
// }
// public void setAge(Integer age) {
// this.age = age;
// }
// @Override
// public String toString() {
// return "Person [name=" + name + ", age=" + age + "]";
// }
// }
// 1.
// static class Person implements Comparable<Person>{
// private String name;
// private Integer age;
// public Person(String name, Integer age) {
// super();
// this.name = name;
// this.age = age;
// }
// public Person() {
// super();
// }
// public String getName() {
// return name;
// }
// public void setName(String name) {
// this.name = name;
// }
// public Integer getAge() {
// return age;
// }
// public void setAge(Integer age) {
// this.age = age;
// }
// @Override
// public String toString() {
// return "Person [name=" + name + ", age=" + age + "]";
// }
// @Override
// public int compareTo(Person o) {
// return age - o.getAge();
// }
// }
}
泛型的练习
最新推荐文章于 2024-07-20 16:05:18 发布
本文介绍了Java中泛型在集合类如Set和Map中的使用,强调了泛型在确保数据类型安全和提高代码可读性方面的重要性。通过示例展示了如何使用泛型创建自定义比较器,以及如何在List中包含Map作为元素。同时,还讲解了自定义泛型类Person及其使用方式。
摘要由CSDN通过智能技术生成