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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何万县 中级黑马   /  2012-4-1 13:33  /  1848 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

谁能跟我详细讲解一下吧?这几个概念我有些混沌!谢谢

2 个回复

倒序浏览
Collection 是集合框架中的一个顶层接口,它里面定义了单列集合的共性方法。它有两个常用的子接口,List:对元素都有定义索引。有序的。可以重复元素。Set:不可以重复元素。无序。        |--List:元素是有序的,元素可以重复。因为该集合体系有索引。
                |--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。
                |--LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询稍慢。线程不同步。
                |--Vector:底层是数组数据结构。线程同步。被ArrayList替代了。因为效率低。


        |--Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复。
                |--HashSet:底层数据结构是哈希表。是线程不安全的。不同步。
                        HashSet是如何保证元素唯一性的呢?
                        是通过元素的两个方法,hashCode和equals来完成。
                        如果元素的HashCode值相同,才会判断equals是否为true。
                        如果元素的hashcode值不同,不会调用equals。

                        注意,对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法。
                        AarryList对元素增,减,判断,删操作依赖元素的equals().
                        HashSet判断元素唯一性原理:判断元素的hashCode值是否相同。
                                                                           如果相同,还会继续判断元素的equals方法,是否为true。


                |--TreeSet:可以对Set集合中的元素进行排序。
                                        底层数据结构是二叉树。
                                        保证元素唯一性的依据:
                                        compareTo方法return 0.

                                        TreeSet排序的第一种方式:让元素自身具备比较性。
                                        元素需要实现Comparable接口,覆盖compareTo方法。

                                        public interface Comparable<T>
                                        也种方式也称为元素的自然顺序,或者叫做默认顺序。
                                        此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,
                                        类的 compareTo 方法被称为它的自然比较方法。

                                        int compareTo(T o)比较此对象与指定对象的顺序。如果该对象小于、等于或大于
                                        指定对象,则分别返回负整数、零或正整数。
Map
        |--Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的。jdk1.0.效率低。
        |--HashMap:底层是哈希表数据结构,允许使用 null 值和 null 键,该集合是不同步的。将hashtable替代,jdk1.2.效率高。
        |--TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。

Collections 表示的是对于Collection 集合的工具类,该类中的方法都是静态的
                提供的方法中有可以对list集合进行排序,二分查找等方法。
                通常常用的集合都是线程不安全的。因为要提高效率。
                如果多线程操作这些集合时,可以通过该工具类中的同步方法,将线程不安全的集合,转换成安全的。
回复 使用道具 举报
楼主总结得很好,收藏有用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马