Java集合类的问题

最简单的集合类关系如下图

1.几点重要的特征

List,Set,Map将持有对象一律视为Object型别。
Collection、List、Set、Map都是接口,不能实例化,继承自它们的 ArrayList, Vector, HashTable, HashMap是具象class,这些才可被实例化。
vector容器确切知道它所持有的对象隶属什么型别,vector不进行边界检查。

2.各个集合类的特性

List中的元素是可重复,Set中的元素是不可以重复的

ArrayList与Vector

  都是基于数组的,但是长度是可变的,

  ArrayList与Vector区别不大,

  (1)Vector是同步的,ArrayList是非同步的,所以Vector比ArrayList慢,关于线程同步这点稍后我会有随笔专门梳理,会附上链接的

  (2)ArrayList在内存不够时默认是扩展50% + 1个,Vector是默认扩展1倍(http://www.cnblogs.com/wanlipeng/archive/2010/10/21/1857791.html)

  (3)Vector提供indexOf(obj, start)接口,ArrayList没有。

LinkedList是基于链表实现的,所以采用add,remove的时候,开销比较小,想遍历LinkedList需要采用iterator来完成

  java源码LinkedList分析:http://blog.csdn.net/jzhf2012/article/details/8540543

 Set

  HashSet是无序的,输出内容顺序与add相反

  TreeSet无论输入的顺序,输出的都是升序类型的

Map

  HashTable和HashMap

原文地址:https://www.cnblogs.com/MuscleBJL/p/3888649.html