`
ccr1988
  • 浏览: 35708 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

深析java集合(Collection,Map)

阅读更多
   网上看见很多类似的关于集合的文章,但大多都是知其然不知其所以然,于是抽空总结了下,希望能够对想深入学习的朋友有所帮助。
    在集合中最重要的2个接口是Collection和Map
Collection
     集合(序列)接口,存储有序和无序的序列
      它是主接口,它的下面有几个重要的子接口List和Set
     首先从接口的角度比较list和set的区别:
        List:有序序列,里面有indexOf()方法来得到下标
        Set没有该方法,也就是说它是无序的。
      List接口
        它同样有3个重要的实现类ArrayList,Vector,LinkedList
        ArrayList 在实现List等接口的基础上,多实现了RandomAccess接口,而该接口也就决定了ArrayList特有的属性,随即读取,速度非常的快,但是是非同步的。
        Vector 跟ArrayList实现的接口完全一样,唯一的区别就是该类是同步的。
        LinkedList 在实现List等接口的基础上,多实现了Deque,Queue接口(Deque extends Queue) ,而 Queue 有add(int index,E element) 等方法,也就决定了该实现类具备按照标记来快速的添加和删除数据,也是根本原因。
    Set接口
    无序不重复序列 ,它缺少按照下标来取值的一些方法
    它的重要实现类HashSet
       该类实现set接口,有hash表(一个map实例)支持,也就是hashset是由hashmap产生的,只是它的key和value去掉只保留了Entry,非同步
Map   
    将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值
    由Map.Entry<K,V> 嵌套类实现映射,该方法重写了hashcode,也就是说继承或实现该类的类的hashcode由其内容决定,与地址无关。
  它的实现类也是2个经典的类HashMap.HashTable
    这2个类在接口的继承上没有差异,属性也基本一样,就跟ArrayList跟Vector一样,
HashMap非同步,而HashTable是同步的。
  我想大家如果能够了解到这些,就能够清晰的了解其用法,有时间可以看下他们的原码。  
2
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics