Java集合异同
1、Collection 接口 :
Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的
元素, Java不提供直接继承自Collection的类,只提供继承它的子接口(如List和set)。
Collection 接口存储一组不唯一,无序的对象。
2、List 接口 :
List接口是一个有序的 Collection,使用此接口能够精确的控制每个元素插入的位置,
能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的
索引为 0,而且允许有相同的元素。
List 接口存储一组不唯一,有序(插入顺序)的对象。
3、Set 接口:
Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。
Set 接口存储一组唯一,无序的对象。
4、Map:
Map 接口存储一组键值对象,提供key(键)到value(值)的映射。
5、什么是哈希?
(1)哈希就是基于数组,通过把键值用哈希函数转换成数组下标。
(2)如果转换的数组下标对应的数据项已经存在数据,这就叫做冲突,而解决冲突的办法有开放地址法和链地址法。
(3)开放地址法就是一个一个的顺着数组往下查找空位。
(4)链地址法就是数组中的每位置都设有一条链表,数据项就放到键值所对应的数组下标中的链表中,包括多个键值相同的数据项,也就是键值映射到同一个数组位置,数据项同样放到链表中。
6、Set和List的区别:
1. Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以
重复的元素。
2. Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类
有HashSet,TreeSet>。
3. List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。
查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 <实现类有ArrayList,
LinkedList,Vector> 。