A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 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()方法的返回值排序
                                两种方法的方法实体几乎没有差别。

5 个回复

倒序浏览
集合的选择:
        按需求进行分析。

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

回复 使用道具 举报
果断收藏啊!感谢分享!
回复 使用道具 举报
集合常见方法和遍历:
        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()方法得到键值对对应的键和值。

回复 使用道具 举报
谢谢分享
回复 使用道具 举报
楼主好给力
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马