java基础的小细节2-集合框架

来源:互联网 发布:sql 恢复删除数据 编辑:程序博客网 时间:2024/06/03 16:41



List:有序(元素存入集合的顺序和取出的顺序一致),元素都有索引。元素可以重复。

ArrayList:底层的数据结构是数组,线程不同步,ArrayList替代了Vector,查询元素的速度非常快。

LinkedList:底层的数据结构是链表,线程不同步,增删元素的速度非常快Vector:底层的数据结构就是数组,线程同步的,Vector无论查询和增删都巨慢。

可变长度数组的原理:

当元素超出数组长度,会产生一个新数组,将原数组的数据复制到新数组中,再将新的元素添加到新数组中。

ArrayList:是按照原数组的50%延长。构造一个初始容量为 10 的空列表。

Vector:是按照原数组的100%延长。

Set接口中的方法和Collection中方法一致的。Set接口取出方式只有一种,

迭代器

--HashSet:底层数据结构是哈希表,线程是不同步的无序,高效;

HashSet集合保证元素唯一性:通过元素的hashCode方法,和equals方法完成的。当元素的hashCode值相同时,才继续判断元素的equals是否为true。如果为true,那么视为相同元素,不存。如果为false,那么存储。

如果hashCode值不同,那么不判断equals,从而提高对象比较的速度。

LinkedHashSet:有序,hashset的子类。

TreeSet:Set集合中的元素的进行指定顺序的排序。不同步TreeSet底层的数据结构就是二叉树

对于ArrayList集合,判断元素是否存在,或者删元素底层依据都是equals方法。

对于HashSet集合,判断元素是否存在,或者删除元素,底层依据的是hashCode方法和equals方法。

Map集合:

Hashtable:底层是哈希表数据结构,是线程同步的。不可以存储null键,null值。

HashMap:底层是哈希表数据结构,是线程不同步的。可以存储null键,null值。替代了Hashtable.

TreeMap:底层是二叉树结构,可以对map集合中的键进行指定顺序的排序。

Map集合存储和Collection有着很大不同:

Collection一次存一个元素;Map一次存一对元素。

Collection是单列集合;Map是双列集合。

Map中的存储的一对元素:一个是键,一个是值,键与值之间有对应(映射)关系。

特点:要保证map集合中键的唯一性。


原创粉丝点击