Java常见集合类总结(欢迎指正补充)
集合类 | 有序 | 允许元素重复 | 实现方式 | 线程安全 | 特点说明 | ||
Collection | List | ArrayList | 存取有序 | 是 | 数组 | 否 | 1、允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢。 2、ListIterator只应该用来由后向前遍历 ArrayList,而不是用来插入和移除元素。因为那比LinkedList开销要大很多。 3、每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法并 没有定义。当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。 |
LinkedList | 链表 | 在实现中采用链表数据结构。插入和删除速度快,访问速度慢。 | |||||
Vector | 数组 | 是 | 由Vector创建的Iterator,虽然和ArrayList创建的Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException,因此必须捕获该异常。 | ||||
Stack (继承自Vector) | 数组 | Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆栈使用。基本的push和pop方法,还有peek方法得到栈顶的元素,empty方法测试堆栈是否为空,search方法检测一个元素在堆栈中的位置。Stack刚创建后是空栈。 | |||||
Set | HashSet | 否 | 否 | 链表的数组(哈希表) | 否 | 1、HashSet类按照哈希算法来存取集合中的对象,存取速度比较快。 2、存入HashSet的对象必须定义hashCode()。 3、HashSet通常优于HashTree(插入、查找)。只有当需要产生一个经过排序的序列,才用TreeSet。HashTree存在的唯一理由:能够维护其内元素的排序状态。 | |
TreeSet | 自然有序 | 二叉树 | 是一个有序的Set,其底层是一颗树。 1、TreeSet类实现了SortedSet接口,能够对集合中的对象进行排序。 2、使用它可以从Set中提取有序的序列。 | ||||
LinkedHashSet | 存取有序 | 链表,哈希表 | 一个在内部使用链表的Set,既有HashSet的查询速度,又能保存元素被加进去的顺序(插入顺序)。用Iterator遍历Set的时候,它是按插入顺序进行访问的。 | ||||
Map | HashMap | 否 | Key否 value是 | 散列表 | 否 | HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null,即null value和null key。 | |
LinkedHashMap | 存取有序 | 链表 | 类似于HashMap,但是迭代遍历它时,取得“键值对”的顺序是其插入次序,或者是最近最少使用(LRU)的次序。只比HashMap慢一点。而在迭代访问时发而更快,因为它使用链表维护内部次序。 | ||||
WeakHashMap | 否 | 散列表 | WeakHashMap是一种改进的HashMap,它对key实行“弱引用”,如果一个key不再被外部所引用,那么该key可以被GC回收。 | ||||
TreeMap | 自然有序 | 红黑树 | 实现这样一个映象,对象是按键升序排列的。 1、查看“键”或“键值对”时,它们会被排序(次序由Comparable或Comparator决定)。 2、TreeMap的特点在 于,你得到的结果是经过排序的。TreeMap是唯一的带有subMap()方法的Map,它可以返回一个子树。 | ||||
HashTable | 否 | "拉链法"实现哈希表 | 是 | 1、Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。 2、最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。 2、Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。 3、只有HashMap可以让你将空值作为一个表的条目的key或value |
同版表格Excel下载
- 本文固定链接: https://www.coordsoft.com/post/6.html
- 转载请注明: admin 于 生活随想 - zwgu 's world 发表
《本文》有 0 条评论