集合的特点:
1、 集合支持所有的泛类,不能存放基本数据类型。
2、 集合长度可变,无限制。
集合类汇总图:
集合的分类:
第一类Collection接口:通过更新单一对象的方式完成对集合元素的操作,List类和Set类均实现此接口。
第二类Map接口:通过更新键值对(key,value)的方式完成对集合元素的操作,此接口最常用的实现类为HashMap类和TreeMap类。
Collection接口:
子类List接口:存放的元素有序且允许有重复元素的集合接口。
子类Set接口:存放的元素无序且不重复元素的集合接口。
分支Iterator:用于遍历集合的元素的对象, 它使得集合的数据结构和被遍历的对象分离,迭代器遍历被隔离对象时不会影响原对象,Map类集合不能直接调用迭代器,但是Map类提供方法间接使用迭代器。
一、List接口:
概念:用interface修饰不能实例化,存入元素的顺序和取出的顺序相同
常用的实现类:ArryaList类和LinkedList类,这两个类的构造方法和使用方法一致
ArryaList类和LinkedList类的区别:
1、ArrayList实现类是List接口的大小可变数组的实现(动态数组),LinkedList实现类是List 接口的链接列表实现(链表结构)
2、ArrayList实现类要更新元素和删除元素时,效率比较低;但是随机访问元素值时,效率高(直接通过下标快速访问)
LinkedList实现类要插入元素和删除元素时,执行效率高;但是随机访问元素值时,效率低下(通过首地址的指向来访问元素值的)
二、Set接口:
概念:用interface修饰不能实例化,存入与取出的顺序不一致
常用的实现类:HashSet类和TreeSet类,都根据每个对象的哈希码值(调用hashCode()方法获得),找到它的下标并把对象存储到哈希表相应位置中;如果该位置没有其它元素,就直接储存;如果有元素,则进行比较元素是否一样(用equals方法),如果一样就不存储,如果不一样就存储在该位置目录下(自定义类要重写比较方法)
HashSet类和TreeSet类的区别:
1、 HashSet类是根据元素的哈希码来进行存放的,当取出时,也可以根据哈希码快速找到。
2、 TreeSet类使用红黑树结构对加入的元素进行排序存放,通过TreeSet构造方法来获取TreeSet对象(自定义类要重写compareTo方法)
Map接口:
Map类集合中不能有重复的“键”,Map实现类中存储的“键值”映射对是通过键来唯一标识的,Map底层的“键”是使用Set来存放的,因此存入Map中的映射对的“键”对应的类必须重写hashCode()和equals()方法。
常用实现类:HashMap类和TreeMap类
一、 实现类HashMap: 提供所有可选的映射操作,它内部对“键”用Set进行散列存放(hashCode()、equals()),所以根据“键”去获得“值”的效率很高
二、实现类TreeMap:使用红黑树结构对“键”进行排序存放,存入TreeMap中的“键-值”对的“键”必须是可以“排序”,即自定义类要重写TreeMap构造方法中的比较器Comparator或自定义类实现Comparable接口。