黑马程序员技术交流社区

标题: 关于集合的总结 [打印本页]

作者: 周亮    时间: 2012-12-30 14:41
标题: 关于集合的总结
.用|--方式把整个集合框架的共性和区别总结下,哪些是按顺序输出的,哪些不是按顺序的,
哪些可以有重复哪些没有重复元素,还有其的数据结构,查询快慢,增删快慢,线程安全,效率高低,
Collection
                |--List 元素可以重复,有序
                        |--ArrayList
                                底层数据结构是数组,查询快,增删慢
                                线程不安全,效率高。
                        |--Vector
                                底层数据结构是数组,查询快,增删慢
                                线程安全,效率低。
                        |--LinkedList
                                底层数据结构是链表,查询慢,增删快
                                线程不安全,效率高。
                |--Set 元素唯一,无序
                        |--HashSet
                                底层数据结构是哈希表。
                                如果保证元素唯一性的呢?
                                        它依赖于两个方法:hashCode和equals。
                                        首先,判断哈希值是否相同,如果不同,就直接添加到集合中。
                                        如果相同,在进入equals方法判断,
                                                如果返回值是false,就添加进集合。
                                                如果返回值是true,说明是重复元素,不添加到集合中。
                        |--TreeSet
                                底层数据结构是二叉树。
                                如果保证元素唯一性的呢?
                                        根据Comparable接口的compareTo方法或者Comparator接口的compare方法的返回值是否为0,
                                        来确定是否是重复元素。如果是0,就不添加元素。

                                        排序:
                                        让元素本身具备比较性:Comparable -- compareTo
                                        让集合具备比较性:Comparator -- compare

        如果你使用的集合要保证元素唯一:Set
                你想排序吗?
                        不想:HashSet
                        想:TreeSet
               
                不懂:HashSet

        如果你使用的集合不用保证元素唯一:List
                你是用于查询吗?ArrayList
                你是用经常改变吗?LinkedList
                有多线程安全问题吗?Vector

                我真的不懂:ArrayList

        小技巧:
        Array:说明底层数据结构是数组,查询快,增删慢
        Link:说明底层数据结构是链表,查询慢,增删快
        Hash:说明底层数据结构是哈希表,保证元素唯一,要依赖hashCode和equals。
        Tree:说明底层数据结构是二叉树,有两种方案保证唯一和排序:
                A:Comparable -- compareTo
                B:Comparator -- compare


Map        键唯一,双列的集合
        |--HashMap
                数据结构是哈希表,保证键唯一
                键和值可以为null
                线程不安全的
                |--LinkedHashMap
                        保证键唯一,有序
        |--Hashtable
                数据结构是哈希表,保证键唯一
                键和值不可以为null
                线程安全的
                |--Properties
                        可以和IO结合的集合对象
        |--TreeMap
                数据结构是二叉树,保证键唯一,还可以排序
                线程不安全的
作者: 清水    时间: 2012-12-30 18:22
写的还好,不过呢?这个对论坛里的朋友有多大帮助?
作者: 陈进    时间: 2012-12-31 23:09
楼主的精神值得我们学习啊,。。。。。。。。。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2