()
容器的部分的总结:
容器的两大分支接口,1、Collection接口。2、MAP接口
1、Collection接口,分为2个子接口,Set接口和List接口
(a)List的接口的特性,元素是有序排列,可以重复,实现类有:ArrayList/LinkedList/Vector
其中ArrayList和Vector底层数据结构相同,都是有数组实现的,不同的是,ArrayList是非线程同步的,Vector是线程同步的;
LinkedList底层使用链表结构实现;
ArrayList/Vector和LinkedList相比前者查询效率高,增效效率低,后者查询效率低,增删效率高。
(b) Set中的元素没有顺序,不可重复。常用的实现类有HashSet和TreeSet。
HashSet:采用哈希算法实现,查询效率和增删效率都比较高。
TreeSet:采用红黑树数据结构,内部需要对存储的元素进行排序。因此,对应的类需要实现Comparable接口。重写compareTo()方法比较对象之间的大小,或者调用外部比较器才能进行内部排序。
2、 Map接口
Map接口的特性:类用来存储键(key)-值(value) 对。
Map接口的实现类有HashMap和TreeMap等。Map类中存储的键-值对通过键来标识,所以键值不能重复。
(a)HashMap底层使用哈希表(数组+链表),允许key和Value可以是Null,key是唯一的,所以key为Null只能有一个;
(b)TreeMap使用红黑树进行实现,key是唯一有序的(升序)
value可以不唯一
泛型Generics
JDK1.5以后增加了泛型。泛型的本质就是“数据类型的参数化”。 我们可以把“泛型”理解为数据类型的一个占位符(形式参数),即告诉编译器,在调用泛型时必须传入实际类型。泛型的运用范围可以是类,接口,方法;
(1) 向集合添加数据时保证数据安全。(2) 遍历集合元素时不需要强制转换。
代码演示
Iterator迭代器是用于遍历各种容器时使用;
使用方法:
boolean hasNext ( ) 如果迭代具有更多元素,则返回true。