1.集合类是放在java.util.*;这个包里。集合类存放的都是对象的引用,而非对象本身,为了说起来方便些,我们称集合中的对象就是指集合中对象的引用(reference)。引用的概念大家不会忘了吧,在前边我们讲数据类型时讲的。 集合类型主要有3种:set(集)、list(列表)、map(映射)和Queue(队列)。
(1) Set集(set)是最简单的一种集合,它的对象不按特定方式排序,只是简单的把对象加入集合中,就像 往口袋里放东西。对集中成员的访问和操作是通过集中对象的引用进行的,所以集中不能有重复对象。我们 知道数学上的集合也是Set这个,集合里面一定是没有重复的元素的。
(2)List列表(List)的主要特征是其对象以线性方式存储,没有特定顺序,只有一个开头和一个结尾,当 然,它与根本没有顺序的Set是不同的。它是链表嘛,一条链肯定有顺序这个顺序就不一定了。
(3)Map 映射(Map),这个在java里不是地图的意思,其实地图也是映射哈。它里面的东西是键- 值对(key-value)出现的,键值对是什么呢?举个例子,比如我们查字典,用部首查字法。目录那个字就 是键,这个字的解释就是值。键和值成对出现。这样说可以理解吧。这也是很常用的数据结构哦。
(4)Queue 在jdk5.0以前,通常的实现方式是使用java.util.List集合来模仿Queue。Queue的概念通过 把对象添加(称为enqueuing的操作)到List的尾部(即Queue的后部)并通过从List的头部(即Queue的 前部)提取对象而从 List中移除(称为dequeuing的操作)来模拟。你需要执行先进先出的动作时可以直接 使用Queue接口就可以了。 这4个东西,有时候功能还不太完善,需要有些子类继承它的特性。Set的子接 口有TreeSet,SortedSet,List的有ArrayList等,Map里有HashMap,HashTable等,Queue里面有 BlockingQueue等。
2.容器可以管理对象的生命周期、对象与对象之间的依赖关系,您可以使用一个配置文件(通常是XML),在上面定义好对象的名称、如何产生(Prototype 方式或Singleton 方式)、哪个对象产生之后必须设定成为某个对象的属性等,在启动容器之后,所有的对象都可以直接取用,不用编写任何一行程序代码来产生对象,或是建立对象与对象之间的依赖关系。容器是一个Java 所编写的程序,原先必须自行编写程序以管理对象关系,现在容器都会自动帮您作好。Java容器类包含List、ArrayList、Vector及map、HashTable、HashMap
ArrayList和HashMap是异步的,Vector和HashTable是同步的,所以Vector和HashTable是线程安全的,而 ArrayList和HashMap并不是线程安全的。因为同步需要花费机器时间,所以Vector和HashTable的执行效率要低于 ArrayList和HashMap。