黑马程序员技术交流社区

标题: 【记录】代码练习-集合总结 [打印本页]

作者: Kevin.Kang    时间: 2015-7-21 11:07
标题: 【记录】代码练习-集合总结
本帖最后由 Kevin.Kang 于 2015-7-21 13:47 编辑

Collection和Map的区别:
        Collection存储的是单独出现的元素,自接口Set元素唯一,子接口List元素可重复。
        Map存储的是键值对形式的元素,键唯一,值可以重复。

Collection和collections区别:
        Collection是单列集合的顶层接口,有两个子类Set和List
        Collections针对集合进行操作的工具类,

集合:
        Collection(单列集合)
                List(有序,可重复)
                        ArrayList
                                底层数据结构数组,查询快,增删慢
                                线程不安全,效率高
                        Vector
                                底层数据结构数组,查询快,增删慢
                                线程安全,效率低
                        LinkedList
                                底层数据结构链表,查询慢,增删快
                                线程不安全,效率高
                Set(无序,唯一)
                        HashSet
                                底层数据结构哈希表
                                哈希表依赖两个方法:hashCode()和equals(),这两种方法快捷键自动生成即可
                                        首先判断hashCode()是否相同
                                                是:继续执行,判断equals()的值
                                                        true:相同,元素重复,不添加
                                                        false:不相同,添加到集合中
                                                否:添加到集合中
                                LinkedHashMapn
                                        底层数据结构哈希表和链表
                                        链表保证数据的有序
                                        哈希表保证数据的唯一
                        TreeSet
                                底层数据结构红黑树(自平衡的二叉树)
                                保证唯一性:
                                        元素实现Comparable接口,用compareTo()方法进行比较。
                                        集合实现Comparator接口,用compare()方法进行比较。
                                保证有序性:
                                        自然排序:元素具有比较性
                                                元素实现Comparable接口,根据compareTo()方法的返回值排序
                                        比较器排序:集合具有比较性
                                                集合实现Comparator接口,根据compare()方法的返回值排序
                                两种方法的方法实体几乎没有差别。


        Map(双列集合)
                Map存储键值对形式的元素,键唯一,值可以重复。数据结构仅对键有效。
                HashMap
                        底层数据结构哈希表,线程不安全,效率高,键和值都可为null。
                        哈希表依赖两个方法:hashCode()和equals(),这两种方法快捷键自动生成即可
                                        首先判断hashCode()是否相同
                                                是:继续执行,判断equals()的值
                                                        true:相同,元素重复,不添加
                                                        false:不相同,添加到集合中
                                                否:添加到集合中
                        LinkedHashMap
                                底层数据结构哈希表和链表
                                链表保证数据的有序
                                哈希表保证数据的唯一
                Hashtable
                        底层数据结构哈希表,线程安全,效率低,键和值不可为null。
                        哈希表依赖两个方法:hashCode()和equals(),这两种方法快捷键自动生成即可
                                        首先判断hashCode()是否相同
                                                是:继续执行,判断equals()的值
                                                        true:相同,元素重复,不添加
                                                        false:不相同,添加到集合中
                                                否:添加到集合中
                TreeMap
                        底层数据结构红黑树(自平衡的二叉树)
                                保证唯一性:
                                        元素实现Comparable接口,用compareTo()方法进行比较。
                                        集合实现Comparator接口,用compare()方法进行比较。
                                保证有序性:
                                        自然排序:元素具有比较性
                                                元素实现Comparable接口,根据compareTo()方法的返回值排序
                                        比较器排序:集合具有比较性
                                                集合实现Comparator接口,根据compare()方法的返回值排序
                                两种方法的方法实体几乎没有差别。

作者: Kevin.Kang    时间: 2015-7-21 14:00
集合的选择:
        按需求进行分析。

        是否键值对形式:
                是:Map
                        是否排序:
                                是:TreeMap
                                否:HashMap
                        不清楚就使用HashMap
                否:Collection
                        是否唯一:
                                是:Set
                                        是否排序:
                                                是:TreeSet
                                                否:HashSet
                                不清楚就使用HashSet
                                否:List
                                        是否安全:
                                                是:Vector
                                                否:ArrayList或者LinkedList
                                                        增删多:LinkedList
                                                        查询多:ArrayList
                                                不清楚就用ArrayList。
                        都不清楚就使用ArrayList。


作者: oooohnick    时间: 2015-7-21 14:14
果断收藏啊!感谢分享!
作者: Kevin.Kang    时间: 2015-7-21 14:22
集合常见方法和遍历:
        Collection:
                add():添加
                remove():删除
                contains():判断是否包含指定元素
                iterator():迭代器
                size():集合长度

        遍历:
                迭代器
                增强for

        List:
                增加普通for,利用size()和get()方法。

        Map:
                put():添加
                remove():删除
                containskey(),containsvalue():判断是否包含指定的键(值)
                keyset():获取所有键的Set集合
                values():获取所有值的Collection集合
                entrySet():获取键值对的Set集合
                get():得到指定键所对应的值
                size():集合长度

        遍历:
                两种方式:
                获取所有键集合,遍历获取对应值
                获取所有键值对集合,遍历获取所有键集合,使用Map.Entry接口下的getKey()和getValue()方法得到键值对对应的键和值。


作者: eayonh    时间: 2015-7-21 14:47
谢谢分享
作者: cloud1991    时间: 2015-9-20 10:07
楼主好给力




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