一、泛型:
1.为什么使用泛型?
1)装入集合的类型都被当作 Object 对待,从而失去自己的实际类型。
2)从集合中取出时往往需要转型,效率低,容易产生错误。
3)泛型增强程序的可读性和安全性。
2.泛型的本质:
泛型的本质就是“数据类型的参数化”。泛型存在编译前;
3.泛型的分类:
1)泛型类;
2)泛型接口;
3)泛型方法;
![](https://img.haomeiwen.com/i18633299/4dcb4f5666d0f9a5.png)
![](https://img.haomeiwen.com/i18633299/8c6ae552d8a09bb7.png)
4.自定义泛型:
在类的声明处增加泛型列表,如<T,E,K,V>;
![](https://img.haomeiwen.com/i18633299/801610d6019a825c.png)
![](https://img.haomeiwen.com/i18633299/fc889a2bba2d2dd7.png)
5.容器中的泛型使用:
在Collection、List、Set、Map、Iterator接口都定义了泛型。
![](https://img.haomeiwen.com/i18633299/e43ed58adcd0768a.png)
![](https://img.haomeiwen.com/i18633299/d2874a2e8d0e029c.png)
![](https://img.haomeiwen.com/i18633299/28cba311043a32dc.png)
二、 迭代器:
迭代器提供了统一的遍历容器的方式。
1.使用迭代器遍历容器:
(1)遍历List-Set;
使用ListIterator 接口遍历List;ListIterator 是对 Iterator 接口的扩展;Set的遍历和List类似:
![](https://img.haomeiwen.com/i18633299/8a2b9d68ad463876.png)
![](https://img.haomeiwen.com/i18633299/511da7b94383b987.png)
(2)遍历Map:
1)根据Key获取value;
2)使用entrySet;
![](https://img.haomeiwen.com/i18633299/3a438de87664815e.png)
![](https://img.haomeiwen.com/i18633299/5d1b6235ba6d474e.png)
三、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);
![](https://img.haomeiwen.com/i18633299/0356a93325244fe0.png)
![](https://img.haomeiwen.com/i18633299/180760e935fc4beb.png)
四、容器总结:
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类:存储的键-值对通过键来标识,所以键值不能重复。
![](https://img.haomeiwen.com/i18633299/b64b1c24e6443909.png)
网友评论