Java学习笔记-集合类(1)

来源:互联网 发布:微信朋友圈的网络骗局 编辑:程序博客网 时间:2024/06/06 23:17
(1)集合的分类
1 单列集合 Collection
Collection是最基本的集合接口,类不能直接继承自Collection,都是继承自Collection的子接口List和Set。
1.1 List
List的特点是有序可重复。使用此接口可以精确的控制元素的插入位置,能够通过索引的位置来访问元素内容。
实现List接口的常用类有LinkedList、ArrayList、Vector。
1.1.1 ArrayList
ArrayList实现了可变大小的数组,允许null元素。因为是由数组实现,内存地址连续,所以查找速度快;在增删的时候由于要考虑到数组的增容,需要拷贝数据,所以增删速度慢。
ArrayList没有同步。
1.1.2 Vector
Vector的实现原理和ArrayList相似,但是Vector是同步的。因为考虑到了线程安全问题,所以效率要低一点。

1.1.3 LinkedList
LinkedList是用链表实现的,所以增删速度快,查找速度慢。允许null元素。
1.2 Set
Set无存储顺序,不可以重复,允许使用null元素。

1.2.1 HashSet
HashSet底层是以哈希表实现, 存取速度快,线程不安全。
在往HashSet添加元素的时候,首先会调用元素的HashCode方法得到元素的哈希码值,然后经过运算得出该元素在哈希表中的位置。
情况1:如果算出的位置目前还没有存在任何元素,则可以直接将该元素添加到哈希表中。
情况2:如果算出的位置目前已经存在其他的元素,那么还会调用元素的equals方法再与这个位置上的元素比较一次。如果equals方法返回的是true,那么该元素被视为重复元素,不允许被添加;如果返回的是false,那么该元素也可以被添加。
1.2.2 TreeSet
TreeSet底层是二叉树的数据结构,默认对元素进行了排序。
往TreeSet添加元素的时候,
情况1:如果元素具备自然顺序的特点,那么TreeSet会根据元素的自然顺序特性进行排序存储。
情况2:如果不具备自然顺序的特点,那么元素的类就必须要实现Comparable接口,把比较的规则定义在CompareTo方法上。
情况3:如果不具备自然顺序的特点,也没有实现Comparable接口,那么在创建TreeSet对象的时候必须要传入比较器对象。比较器的定义格式:
class 类名 implements Comparator { }

2 双列集合Map
Map存储的是键值对。键不可以重复,值可以重复。

2.1 HashMap
HashMap底层是哈希表数据结构,可以存入null键或者null值,线程是不同步的,存取速度快。
2.3 TreeMap
TreeMap底层是二叉树的数据结构,默认对元素进行自然排序,线程不同步。
2.3 HashTable
HashTable底层是哈希表数据结构,不可以存入null键或者null值。
0 0
原创粉丝点击