一、泛型:
1.为什么使用泛型?
1)装入集合的类型都被当作 Object 对待,从而失去自己的实际类型。
2)从集合中取出时往往需要转型,效率低,容易产生错误。
3)泛型增强程序的可读性和安全性。
2.泛型的本质:
泛型的本质就是“数据类型的参数化”。泛型存在编译前;
3.泛型的分类:
1)泛型类;
2)泛型接口;
3)泛型方法;
4.自定义泛型:
在类的声明处增加泛型列表,如
5.容器中的泛型使用:
在Collection、List、Set、Map、Iterator接口都定义了泛型。
二、 迭代器:
迭代器提供了统一的遍历容器的方式。
1.使用迭代器遍历容器:
(1)遍历List-Set;
使用ListIterator 接口遍历List;ListIterator 是对 Iterator 接口的扩展;Set的遍历和List类似:
(2)遍历Map:
1)根据Key获取value;
2)使用entrySet;
三、Collections工具类:
类java.util.Collections提供了对Set,List,Map进行排序,填充,查找元素的辅助方法。
1.Collections的使用:
(1)Collections的方法都是静态的可以直接类名加方法名调用;
(2)专门用来操作集合的工具类
(3)Collections的构造方法是私有的,不能创建对象;
2.常用方法:
1)Collections.addAll(list, "aaa","bbb","ccc","ccc");
2)int index = Collections.binarySearch(list, "ccc");
3)Collections.copy(list2, list);
4) Collections.fill(list3, "888");
5)String max = Collections.max(list4);
6)String min = Collections.min(list4);
7)Collections.reverse(list4);
8) List list5 = Collections.synchronizedList(list4);
四、容器总结:
1.Collection接口的两个子接口:
(1)List中的元素有顺序,可重复。常用的实现类有ArrayList、LinkedList和 vector。
(2)Set中的元素没有顺序,不可重复。常用的实现类有HashSet和TreeSet。
(3)实现Map接口的类用来存储键(key)-值(value) 对。Map 接口的实现类有HashMap和TreeMap
(4)特性:
1)ArrayLis:查询效率高,增删效率低,线程不安全。
2)LinkedLis:查询效率低,增删效率高,线程不安全。
3)vector:线程安全,效率低,其它特征类似于ArrayList。
4) HashSet:采用哈希算法实现,查询效率和增删效率都比较高。
5)TreeSet:内部需要对存储的元素进行排序。
6)Map类:存储的键-值对通过键来标识,所以键值不能重复。