`
rainlife
  • 浏览: 229865 次
  • 性别: Icon_minigender_1
  • 来自: 我也来自火星?
社区版块
存档分类
最新评论

[体力活]Collection接口的总结

    博客分类:
  • JAVA
阅读更多
发一个完全体力活的帖子,是对JDK的中Collection接口的总结,说明全部摘自JDK6.0。
Map接口:
    |
    + -- WeakHashMap: 以弱键 实现的基于哈希表的 Map。在 WeakHashMap 中,当某个键不再正常使用时,将自动移除其条
    |      目。更精确地说,对于一个给定的键,其映射的存在并不阻止垃圾回收器对该键的丢弃,这就使该键成为可终止的,被终
    |      止,然后被回收。丢弃某个键时,其条目从映射中有效地移除,因此,该类的行为与其他的 Map 实现有所不同。此实现
    |      不是同步的。
    |
    + -- TreeMap:该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的
    |    构造方法。此实现不是同步的。
    |
    + -- HashMap:基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了      
    |        非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺   
    |       序恒久不变。此实现不是同步的。
    |
    +-- SortedMap: 进一步提供关于键的总体排序 的 Map。该映射是根据其键的自然顺序进行排序的,或者根据通常在创建有
         序映射时提供的 Comparator 进行排序。对有序映射的 collection 视图(由 entrySet、keySet 和 values 方法返回
         )进行迭代时,此顺序就会反映出来。要采用此排序方式,还需要提供一些其他操作(此接口是 SortedSet 的对应映
         射)。

Collection接口:
    |
    + -- 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 后进行添加或移除项的操作。此实现是同步的
                。
分享到:
评论
19 楼 cglxa 2007-05-18  
顶一下,不错的体力活啊!
18 楼 rainlife 2007-05-07  
Godlikeme 写道
支持下楼主,
一般认为,对这些接口的了解程度是java基础的一个重要方面。

的确,自己也是在做一个缓存的设计时,发现这些接口确实很精髓,在使用的时候,需要了解一些细节问题。
17 楼 Godlikeme 2007-05-07  
支持下楼主,
一般认为,对这些接口的了解程度是java基础的一个重要方面。
16 楼 rainlife 2007-05-07  
wandou 写道
就几个集合接口,就博大精深了?太会yy了吧?

我上面已经说过了,仁者见仁,智者见智,觉得你觉得很一般,你可以回答我上面的几个问题,或者,自己去实现实现几个接口类试试,接口类实用时是很简单,但真正要用好,确并不是易事。
15 楼 wandou 2007-05-07  
就几个集合接口,就博大精深了?太会yy了吧?
14 楼 pipi2142001 2007-04-26  
支持原创!!
13 楼 rainlife 2007-04-16  
cozone_柯中 写道
rainlife 写道
qingjian 写道
要想使用好这些接口 不是一个简单的事情

嗯,JAVA的集合接口,可以说是JDK中最博大精深的几个类了,想要用好确实不简单。所以做了这样的一个总结,混个眼熟,呵呵。


只是最常用,用的多而已 , 能称得上最博大精深么??

这个只能说是仁者见仁,智者见智了,可能你掌握得好,所以觉得没什么,不过像我这样的大部分新手来说,还不是很了解内部的东西,比如说要设计一个缓存,用哪一个Map?什么时候用ArrayList什么时候用Vector(虽然网上已经有很多这样的文章了),但为什么要这样,里面有个负载因子,是什么?怎么实现的?有什么好处?应该在一些开源框架中,说某个类对于对于性能方面做了优化(使用了某个集合类),那么它是如何优化的?
12 楼 fj_opensky 2007-04-16  
好,支持你!不容易!
11 楼 cozone_柯中 2007-04-16  
rainlife 写道
qingjian 写道
要想使用好这些接口 不是一个简单的事情

嗯,JAVA的集合接口,可以说是JDK中最博大精深的几个类了,想要用好确实不简单。所以做了这样的一个总结,混个眼熟,呵呵。


只是最常用,用的多而已 , 能称得上最博大精深么??
10 楼 rainlife 2007-04-16  
qingjian 写道
要想使用好这些接口 不是一个简单的事情

嗯,JAVA的集合接口,可以说是JDK中最博大精深的几个类了,想要用好确实不简单。所以做了这样的一个总结,混个眼熟,呵呵。
9 楼 qingjian 2007-04-16  
要想使用好这些接口 不是一个简单的事情
8 楼 rainlife 2007-04-15  
引用
JDK6.0 对collections框架有做修改吗?

不是JDK6.0对Collection做了修改,是我上面的那些说明,全部是在JDK6.0的API上面的,呵呵,没说清楚,让大家以为JDK6.0对Collection做了修改,不好意思
7 楼 spiritfrog 2007-04-15  
非常实在啊,加入收藏了。以后用到cellection接口和Map接口的时候看看就好了。
但没看到jdk6里面这些实现的不同啊。
6 楼 eyejava 2007-04-14  
引用
发一个完全体力活的帖子,是对JDK的中Collection接口的总结,说明全部摘自JDK6.0。

JDK6.0 对collections框架有做修改吗?
5 楼 muky 2007-04-14  
不错的总结..
4 楼 step21 2007-04-13  
呵呵,我每次在使用collection的时候都要去查一下api和网上关于这些的总结,用好这个包还真不容易的.
3 楼 rainlife 2007-04-13  
dada 写道
tianxinet写过类似的帖子...

我知道的,这样的帖子实际上网上已经非常多了,不过自己再写一遍,更加加深印象嘛。
2 楼 dada 2007-04-13  
tianxinet写过类似的帖子...
1 楼 freej 2007-04-13  
体力活做的不错,呵呵

相关推荐

Global site tag (gtag.js) - Google Analytics