有多少小伙伴知道Java容器有哪些呢?
array将数值索引关联至对象。它持有型别已知的对象,所以查找对象时并不需要对查找结果做转型动作。array可以是多维的,而且可以持有基本型别(primitives types)。不过array的容量在诞生之后便无法改变。
Collection持有的是单一元素,Map则持有相关联的成对元素。
和array一样,List也将数值索引关联至对象。你可以将array和Lists想像成一种有序的容器(ordered container)。当你加入元素,List会自动调整大小。但是List只能持有Object reference,无法持有基本型别。而且每当你自容器取出Object reference,都得对结果进行转型,才能拿来使用。
迭代器iterator是个对象,职责便是遍历以及选择序列中的一连串对象,而不通过for循环。
如果你需要大量随机访问,则最好用ArrayList。如果会在list的中心处进行大量的安插或删除动作,则最好用LinkedList。
queues、deques、stacks的行为乃是通过LinkedList提供。
Map是一种对象(而非数值索引)关联至其他对象的机制。HashMap的设计思考着重于速度,TreeMap则着重于如何让key保持排序状态,因此不像HashMap那么快速。
Set不接受重复元素。HashSets提供最快的查找速度,TreeSets则使元素保持排序状态。
没有必要在新程序中使用老旧的Vector、Hashtable、Stack。