帮助 | 留言交流 | 登录首页我的图书馆主题阅读精彩目录精品文苑Tags 会员浏览好书推荐以文找文 如何对文章标记,添加批注?Java 中集合类用法总结(转载)wade0564 收录于2010-07-08 阅读数:查看 收藏数:7 公众公开 原文来源 tags : java 集合类欢迎浏览 wade0564 个人图书馆中收藏的文章,想收藏这篇好文章吗,赶快吧,1分钟拥有自己的个人图书馆!我也要收藏 举报Java 中集合类用法总结 收藏Collection ├List │├LinkedList│├ArrayList (异步,线程不安全,空间用完时自动增长原容量一半)│└Vector (同 步,线程安全,空间用完时自动增长原容量一倍)│ └Stack └Set ├HashSet └TreeSet Map ├Hashtable ├HashMap ├WeakHashMap └TreeMapMap 接口: |+ WeakHashMap: 以弱键 实现的基于哈希表的 Map 。
在 WeakHashMap 中,当某个键不再正常使用时,将自动移除其条 | 目。
更精确地说,对于一个给定的键,其映射的存在并不阻止垃圾回收器对该键的丢弃,这就使该键成为 可终止的,被终 | 止,然后被回收。
丢弃某个键时, 其条目从映射中有效地移除,因此,该类的行为与其他的 Map 实现有所不同。
此实现 | 不是同步的。
|+ TreeMap:该映射根据其键的自然顺序进行 排序,或者根据创建映射时提供的 Comparator 进行 排序,具体取决于使用的 | 构造方法。
此实现不是同步的。
|+ HashMap:基于哈希表的 Map 接⼝的实现。
此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。
(除了 | 非同步和允许 使用 null 之外,HashMap 类与 Hashtable ⼤致相同。
)此类不保证映射的顺序,特别是它不保证该顺 | 序恒久不变。
此实现不是同步的。
|+ SortedMap: 进一步提供关于键的总体排序 的 Map 。
该映射是根据其键的自然顺序进 行排序的,或者根据通常在创建有 序映射时提供的 Comparator 进行排序。
对有序映射的 collection 视图(由 entrySet 、keySet 和 values 方法返回 )进行迭代时,此顺序就会反映 出来。
要采用此排序方式,还需要提供一些其他操作(此接⼝是 SortedSet 的对应映 射)。
Collection 接口: |热点推荐中国经典汤品——广东汤常用多音字汇总如果你失恋。
这些话...影响世界的100个管理定律汽车发动机⼯作过程和原理分析温家宝总理答中外记者问女人味,有多少男人可以读懂?珍稀的白头叶猴(组图)三鹿门事件之——中国,...国家公务员职务与级别当代古筝四美 付娜《渔...生活⼩秘方 真的很实用...哲理⼩品:守护梦想聚会时可以玩的⼩游戏依赖型人格障碍的表现和治疗经典妙语,十分精彩江边施救[贴图]李一男2003年在港湾...电脑速度慢的解决方法 ...重装系统后必须做的10件⼤事+ Set接⼝:一个不包含重复元素的 collection。
更正式地说,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并| | 且最多包含一个 null 元素。
正如其名称所 暗示的,此接⼝模仿了数学上的 set 抽象。
| || + HashSet:此类实现 Set 接⼝,由哈希表(实际上是一个 HashMap 实例)支持。
它不保证 set 的迭代顺序; | | 特别是它不保证该顺序恒久不变。
此类允许使用 null 元素。
此类为基本操作提供了稳定性能,此实现 不是同 | | 步 的。
| || + LinkedHashSet:具有可预知迭代顺序的 Set 接⼝的哈希表和链接列表实现。
此实现与 HashSet 的不同之外在| | 于,后者维护着一个运行于所有条目的双重链接列表。
此链接列表定义了迭代顺序,即按照将元素插⼊到 set| | 中的顺序(插⼊顺序)进行迭代。
注意,插⼊顺序不受在 set 中重新插⼊的元素的影响。
此实现不是同步| | 的。
| || + TreeSet:基于 TreeMap 的 NavigableSet 实现。
使用元素的自然顺序对元素进行排序,或者根据创建 set 时| 提供的 Comparator 进行排序,具体取决于使用的构造方法。
此实现为基本操作(add、remove 和 contains)| 提供受保证的 log(n) 时间开销。
此实现不是同步的。
|+ List接⼝:有序的 collection(也称为序列)。
此接⼝的用户可以对列表中每个元素的插⼊位置进行精确地控制。
用户| 可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
|+ ArrayList:List 接⼝的⼤⼩可变数组的实现。
实现了所有可选列表操作,并允许包括 null 在内的所有元素。
| 除了实现 List 接⼝外,此类还提供一些方法 来操作内部用来存储列表的数组的⼤⼩。
(此类⼤致上等同于| Vector 类,除了此类是不 同步的。
)每个 ArrayList 实例都有一个容 量。
该容量是指用来存储列表元素的数| 组的⼤⼩。
它总是至少等于列表 的⼤⼩。
随着向 ArrayList 中不断添加元素, 其容量也自动增长。
并未指定增| 长策略的细节,因为这不只是添 加元素会带来分摊固定时间开销那样简单。
此实现不是同步的。
|+ LinkedList:List 接⼝的链接列表实现。
实现所有可选的列表操作,并且允许所有元素(包括 null)。
除了实| 现 List 接⼝外,LinkedList 类还为在列表的开头及𧻓尾 get、remove 和 insert 元素提供了统一的命名方| 法。
这些操作允许将链接列表用作堆栈、队列或双端队列。
提供先进先出队列操作(FIFO)。
此实现不是同步的。
|+ Vector:Vector 类可以实现可增长的对象数组。
与数组一样,它包含可以使用整数索引进行访问的组件。
但是,Vector 的⼤⼩可以根据需要增⼤或缩⼩,以适应创建 Vector 后进行添加或移除项的操作。
此实现是同步的.1.Collection的功能下 面这张表给出了Collection的所有功能,也就是 你能用Set和List做什么事(不包括从Object自动继承过来的方法)。
(List还有一些额外的功能。
)Map不是继承Collection的,所以我们会区别对待。
boolean add(Object):确保容器能持有你传给它的那个参数。
如果没有把它加进去,就返回false。
(这是个“可选”的方法,本章稍后会再作解释。
)boolean addAll(Collection):加⼊参数Collection所含的所有元素。
只要加了元素,就返回true。
void clear():清除容器所保存的所有元 素。
(“可选”)boolean contains(Object):如果容器持有参数Object,就返回true。
boolean containsAll(Collection):如果容器持有参数Collection所含的全部元素,就返回true。
boolean isEmpty():如果容器里面没有保存任何元 素,就返回true。
Iterator iterator():返回一个可以在容器的各元素 之间移动的Iterator。
boolean removeAll(Collection):删除容器里面所有参数Collection所包含的元素。
只要删过东西,就返回true。
(“可选”) boolean retainAll(Collection):只保存参数Collection所包括的元素(集合论中“交集”的概念)。
如果发生过变化,则返回true。
(“可选”)int size():返回容器所含元素的数量。
Object[] toArray():返回一个包含容器中所有元素 的数组。
Object[] toArray(Object[] a):返回一个包含容器中所有元素的数组,且这个数组不是普通的Object数组,它的类型应该同参数数组a的类型相同(要做类型转换)。
注意,这里没有能进行随机访问的get()方法。
这是因为Collection还包括Set。
而Set有它自己的内部顺序(因此随即访问事毫无意义的)。
所以如果你要检查Collection的元素,你就必须使用迭代器。
2.List的功能List的基本用法事相当将但的。
虽然绝⼤多数时候,你只是用add()加对象,用get()取对象,用iterator()获取这个序列的Iterator,但List还有一些别的很有用的方法。
主题阅读[经典推荐]金庸⼩说简介金庸的中国历史观演讲金庸:中华民族因为开放...金庸⼩说的N⼤排名《金庸全集》典藏版金庸⼩说排排座《金庸⼩说中的武功》(上)金庸笔下的最佳妻⼦和最佳老公网人论金庸: 金庸⼩说看人生金庸⼩说中的悲剧爱情金庸⼩说之十⼤经典爱情片段[灰常点评]金庸十女之...实际上有两种List:擅长对元素进行随机访问的,较常用的ArrayList,和更强⼤的LinkedList。
LinkedList不是为快速的随机访问而设计的,但是它却有一组更加通用的方法。
Lisk(接⼝):List的最重要的特征就是有序;它会确保以一定的顺序保存元素。
List在Collection的基础上添加了⼤量方法,使之能在序列中间插⼊和删除元素。
(只对LinkedList推荐使用。
)List可以制造ListIterator对象,你除了能用它在List的中间插⼊和删除元素之外,还能用它沿两个方法遍历List。
ArrayList*:一个用数组实现的List。
能进行快速的随机访问,但是往列表中间插⼊和删除元素的时候比较慢。
ListIterator只能用在反向遍历ArrayList的场合,不要用它来插⼊和删除元素,因为相比LinkedList,在ArrayList里面用ListIterator的系统开销比较高。
LinkedList:对顺序访问进行了优化。
在List中间插⼊和删除元素的代价也不高。
随机访问的速度相对较慢。
(用ArrayList吧。
)此外它还有addFirst(),addLast(),getFirst(),getLast(),removeFirst()和removeLast()等方法(这些方法,接⼝和基类均未定义),你能把它当成栈(stack),队列(queue)或双向队列(deque)来用。