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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 咪咪 黑马帝   /  2011-11-14 20:37  /  1961 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天看集合方面的视频,晕呼呼的,java中有set.list.map 这么多集合,都是为了存储类型不同的对象,但在用时都又用泛型进行了限制不还是用来存放一个类型的对象吗?引入泛型后迷啊迷。这些集合我只觉得arrylist在.net中很常用。大家给点学习意见。

2 个回复

正序浏览
咪咪 来自手机 黑马帝 2011-11-14 20:59:58
藤椅
谢谢,总结的很详细,你有没有比这在具体的代码说明啊,发给我一份,550697203@qq.com
回复 使用道具 举报
Collection:
        |--List:有序,可重复,有索引。
                |--ArrayList:底层是数组结构。是线程不同步的。 查询速度快。
                |--LinkedList:底层是链表结构。是线程不同的。增删速度快。
                |--Vector:底层是数组结构。是线程同步的。无论查询和增删,慢就一个字。
        |--Set:无序,不可以重复。
                |--HashSet:底层是哈希表数据结构,它是如何保证元素唯一性的呢?
                                        是通过元素对象的hashCode方法和equals方法来保证元素唯一性。
                                        先判断元素对象的hash值是否相同。
                                        如果不同:直接存储,不判断equals。
                                        如果相同:在判断一次equals。

                                        如果equals返回false:视为两个对象不同,存储。在一个hash位置进行桶结构的存储。
                                        如果返回true:视为两个元素相同。不存储。

                |--TreeSet:可以给Set集合中的元素进行排序。
                                        怎么排的序呢?就是比较嘛。
                                        底层是二叉树数据结构。大于返回正数,小于返回负数,等于返回0;                                       
                                        是如何保证元素唯一性的呢?
                                        只要是比较完的结果是0,就视为同一个元素,不存。

                                        排序有两种方式:
                                        1,让元素自身具备比较性。让元素去实现Comparable接口,覆盖compareTo方法。
                                                这种排序成为该对象的自然顺序。
                                        2,但是元素自身如果没有具备比较性,或者元素自身的具备比较性都是所需要的,这时怎么排序呢?
                                                既然元素无法进行自然排序。
                                                我们可以让集合自身具备比较性,那就是在创建集合时,就要有比较的动作。
                                                既然是创建对象时就要具备,那么一定在构造函数中完成。
Map:
        |--Hashtable:底层是哈希表。线程是同步的,不允许null键,null值的存在。被HashMap取代。
        |--HashMap:底层是哈希表。线程是不同步的。允许null键,null值的存在。
                |--LinkedHashMap:融入了链表结构的哈希表,增删效率很快,可以保证有序(存储和取出的顺序一致)。
        |--TreeMap:底层是二叉树,用于给map中的键进行排序。
自己总结的 你可以参考一下 可能会让思路清晰一点
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马