Java的集合类关系图:
List:add/remove/get/set。
1,ArrayList:其实就是数组,容量一大,频繁增删就是噩梦,适合随机查找;
2,LinkedList:增加了push/[pop|remove|pull],好啰嗦,其实都是removeFirst;
3,Vector:历史遗留产物,同步版的ArrayList,名字起的奇奇怪怪,代码和ArrayList太像;
4,Stack:继承自Vector。Java里其实没有纯粹的Stack,自己实现一个吧,用组合的方式,封装一下LinkedList即可;
5,Queue:为什么归到这里呢?本来是单独的一类,不过在SUN的JDK里就是用LinkedList来提供这个功能的,主要方法是offer/pull/peek。
Set:add/remove。get和set呢?抱歉欠奉,可以用迭代器或者转换成list。
1,HashSet:没啥好说的,内部采用HashMap实现的;
2,LinkedHashSet:同上,采用LinkedHashMap实现;
3,TreeSet:TreeMap。
Map:put/get/remove。
1,HashMap/HashTable:散列表,啥都不说了,和ArrayList一样采用数组实现,超过初始容量会对性能有损耗;
2,LinkedHashMap:这个类有点意思,继承自HashMap,但通过重写嵌套类HashMap.Entry实现了链表结构,同样有容量的问题;
3,Properties:没错,这玩意是继承的HashTable。
顺便818坑爹的Arrays.asList,这个方法的实现依赖一个嵌套类,这个嵌套类竟然也叫ArrayList!太坑爹了。