Java容器类类库的用途是“保存对象”,并将其划分为两个不同的概念:
1.Collection
一个独立元素的序列,这些元素都服从一条或者多条规则。
List必须按照插入的顺序保存元素,而Set不能有重复元素。Queue按照排队规则来确定对象产生的顺序(通常与它们被插入的顺序相同)。
有两种类型的List:
ArrayList,它长于随机访问元素,但是在List的中间插入和删除元素时较慢。
LinkedList,它在随机访问方面相对比较慢,但是它进行插入和删除代价较低。
Set:
HashSet、TreeSet、和LinkedHashSet都是Set,每个相同的项只保存一次。
HashSet是最快的获取元素方式,存储的顺序看起来并无实际意义;TreeSet按照比较的结果升序保存对象;LinkedHashSet按照被添加的顺序保存对象。
2.Map
一组成对的“键值对”对象,允许你使用键来查找值。
映射表允许我们使用另一个对象来查找某个对象,它也被称为“关联数组”,因为它将某些对象与另外一些对象关联在了一起,或者被称为“字典”。
HashMap、TreeMap、和LinkedHashMap都是Map。
HashMap提供了最快的查找技术,也没有按照任何明显的顺序来保存其元素。
TreeMap按照比较结果的升序保存键。
LinkedHashMap则按照插入顺序保存键,同时还保留了HashMap的查询速度。
略去一些类和接口,一个简化版的类图关系如下:


- 集合类简介
java.util中共有13个类可用于管理集合对象,它们支持集、列表或映射等集合,以下是这些类的简单介绍
集:
HashSet: 使用HashMap的一个集的实现。虽然集定义成无序,但必须存在某种方法能相当高效地找到一个对象。使用一个HashMap对象实现集的存储和检索操作是在固定时间内实现的.
TreeSet: 在集中以升序对对象排序的集的实现。这意味着从一个TreeSet对象获得第一个迭代器将按升序提供对象。TreeSet类使用了一个TreeMap.
列表:
Vector: 实现一个类似数组一样的表,自动增加容量来容纳你所需的元素。使用下标存储和检索对象就象在一个标准的数组中一样。你也可以用一个迭代器从一个Vector中检索对象。Vector是唯一的同步容器类??当两个或多个线程同时访问时也是性能良好的。(同步即同时只能一个进程访问,其他等待)
但是不同的线程访问Vector的时候不会发生这种错误,因为java会有相应的机制是同一时刻只有一个线程对这个变量操作。
这就是所谓的:
Vector:是线程安全的
ArrayList:不是线程安全的
Stack: 这个类从Vector派生而来,并且增加了方法实现栈??一种后进先出的存储结构。
LinkedList: 实现一个链表。由这个类定义的链表也可以像栈或队列一样被使用。
ArrayList: 实现一个数组,它的规模可变并且能像链表一样被访问。它提供的功能类似Vector类但不同步。
映射:
HashTable: 实现一个映象,所有的键必须非空。为了能高效的工作,定义键的类必须实现hashcode()方法和equal()方法。这个类是前面java实现的一个继承,并且通常能在实现映象的其他类中更好的使用。
HashMap: 实现一个映象,允许存储空对象,而且允许键是空(由于键必须是唯一的,当然只能有一个)。
WeakHashMap: 实现这样一个映象:通常如果一个键对一个对象而言不再被引用,键/对象对将被舍弃。这与HashMap形成对照,映象中的键维持键/对象对的生命周期,尽管使用映象的程序不再有对键的引用,并且因此不能检索对象。
TreeMap: 实现这样一个映象,对象是按键升序排列的。
|
Collection是List和Set两个接口的基接口 Collection和Map接口之间的主要区别在于:Collection中存储了一组对象,而Map存储关键字/值对。 当元素的顺序很重要时选用TreeMap,当元素不必以特定的顺序进行存储时,使用HashMap。Hashtable的使用不被推荐,因为HashMap提供了所有类似的功能,并且速度更快。当你需要在多线程环境下使用时,HashMap也可以转换为同步的。
当你事先不知道要存放数据的个数,或者你需要一种比数组下标存取机制更灵活的方法时,你就需要用到集合类。
集合类存放于java.util包中。 (1)集 (2)列表 (3)映射
java.util中共有13个类可用于管理集合对象,它们支持集、列表或映射等集合,以下是这些类的简单介绍 集: 下图是集合类所实现的接口之间的关系:
Set和List都是由公共接口Collection扩展而来,所以它们都可以使用一个类型为Collection的变量来引用。这就意味着任何列表或集构成的集合都可以用这种方式引用,只有映射类除外(但也不是完全排除在外,因为可以从映射获得一个列表。)所以说,把一个列表或集传递给方法的标准途径是使用Collection类型的参数。 <hr> List接口
参考: http://blog.youkuaiyun.com/xczheng/article/details/3936474 http://www.cnblogs.com/mengdd/archive/2013/01/19/2868095.html |
1331

被折叠的 条评论
为什么被折叠?



