Java学习day-17-1:容器-泛型

一、泛型:

1.为什么使用泛型?

1)装入集合的类型都被当作 Object 对待,从而失去自己的实际类型。

2)从集合中取出时往往需要转型,效率低,容易产生错误。

3)泛型增强程序的可读性和安全性。

2.泛型的本质:

 泛型的本质就是“数据类型的参数化”。泛型存在编译前;

3.泛型的分类:

1)泛型类;

2)泛型接口;

3)泛型方法;

Java学习day-17-1:容器-泛型_第1张图片
代码截图
Java学习day-17-1:容器-泛型_第2张图片
结果

4.自定义泛型:

在类的声明处增加泛型列表,如

Java学习day-17-1:容器-泛型_第3张图片
代码截图
Java学习day-17-1:容器-泛型_第4张图片
结果

5.容器中的泛型使用:

在Collection、List、Set、Map、Iterator接口都定义了泛型。

Java学习day-17-1:容器-泛型_第5张图片
Java学习day-17-1:容器-泛型_第6张图片
Java学习day-17-1:容器-泛型_第7张图片
结果


二、 迭代器:

迭代器提供了统一的遍历容器的方式。

1.使用迭代器遍历容器:

(1)遍历List-Set;

使用ListIterator 接口遍历List;ListIterator 是对 Iterator 接口的扩展;Set的遍历和List类似:

Java学习day-17-1:容器-泛型_第8张图片
代码截图
Java学习day-17-1:容器-泛型_第9张图片
结果

(2)遍历Map:

1)根据Key获取value;

2)使用entrySet;

Java学习day-17-1:容器-泛型_第10张图片
代码截图
Java学习day-17-1:容器-泛型_第11张图片
结果

三、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);

Java学习day-17-1:容器-泛型_第12张图片
代码截图
Java学习day-17-1:容器-泛型_第13张图片
结果

四、容器总结:

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类:存储的键-值对通过键来标识,所以键值不能重复。

你可能感兴趣的:(Java学习day-17-1:容器-泛型)