首页 > Java > Java常见集合类总结(欢迎指正补充)
2018
10-25

Java常见集合类总结(欢迎指正补充)

Java常见集合类总结(欢迎指正补充)

集合类有序允许元素重复实现方式线程安全特点说明
CollectionListArrayList存取有序数组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刚创建后是空栈。
SetHashSet链表的数组(哈希表)1、HashSet类按照哈希算法来存取集合中的对象,存取速度比较快。
2、存入HashSet的对象必须定义hashCode()。
3、HashSet通常优于HashTree(插入、查找)。只有当需要产生一个经过排序的序列,才用TreeSet。HashTree存在的唯一理由:能够维护其内元素的排序状态。
TreeSet自然有序二叉树是一个有序的Set,其底层是一颗树。
1、TreeSet类实现了SortedSet接口,能够对集合中的对象进行排序。
2、使用它可以从Set中提取有序的序列。
LinkedHashSet存取有序链表,哈希表一个在内部使用链表的Set,既有HashSet的查询速度,又能保存元素被加进去的顺序(插入顺序)。用Iterator遍历Set的时候,它是按插入顺序进行访问的。
MapHashMapKey否
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下载

Java常见集合类总结(欢迎指正补充).xlsx


本文》有 0 条评论

留下一个回复