1. TreeSet集合
底层是一个二叉树,存储对象的时候,依据对象的自然顺序,自定义对象具备自然顺序,实现Comparable接口,重写compareTo方法。Person写的,姓名为主要排序条件,年龄次要的条件。按照人的年龄为主要的条件,排序。
JDK中,提供了另外的一种排序方式,比较器排序,比较器接口java..util.Comparator,
TreeSet集合的构造方法中,传递一个比较器对象,按照比较器排序了。
自定义比较器,写一个类,实现Comparator接口,重写compare方法
2. 泛型
JDK1.5版本出现的一种安全机制
格式:
集合类<数据类型> 变量 = new 集合类<数据类型>();
数据类型,指定了这个集合,只能存储这个类型的对象
泛型的出现,将安全问题,由运行时期,提前到了编译时期
ArrayList<E> boolean add(E e) E:看成是一个变量
ArrayList<String> 所有的E都变成了String
好处,减少了代码,使用泛型避免类型的强制转换
泛型什么时候该写泛型:当你用一个类的时候,发现类的右边<>使用泛型了
注意:存储基本数据类型,泛型必须写8个对象包装类
3. 自定义的泛型,保证数据安全
定义一个工厂,生产对象的,制造对象,下订单
泛型类,声明类的时候,加上泛型
泛型方法, 在方法上定义泛型,和类无关
泛型接口
4. 泛型的通配符和限定
通配,所有的都匹配 * *.java XXX.* ?
员工和经理的案例
员工:姓名,年龄,工资,工作
经理:姓名,年龄,工资,奖金,工作
员工和经理的共性内容,抽取一个父类,抽象类,抽象类的构造方法中,给成员变量赋值。? extends Company 限定的是父类,子类? 通配符,传递Company的任意子类,泛型的上限限定。
上限限定 ? extends E 传递E类型,E的子类类型
下限限定 ? super E 传递E类型,E的父类类型
5. Map集合
映射,键映射到值的集合,Map体系的集合,存储对象的时候,一次存储两个对象,一个称作键,一个称作值,双列集合
一个键,最多只能映射一个值
不允许出现重复键
|
|