Java 集合理解(List;Set;Map)

来源:互联网 发布:如何进行会员数据分析 编辑:程序博客网 时间:2024/06/05 15:02

一、ArrayList 和 LinkedList的区别

       ArrayList 和 LinkedList 是两个集合类,用于存储一系列的对象引用。

       1、ArrayList是实现了基于动态数组的数据结构,内部是使用可增长数组实现的。

              LinkedList是基于链表的数据结构 ,使用双链表实现的。

       2、对于随机访问,ArrayList优于LinkedList,因为LinkedList要移动指针。

       3、对于新增和删除,LinkedList优于ArrayList,因为ArrayList要移动数据。     

       ArrayList 更适合读取数据,LinkedList 适合于添加或删除数据。


二、HashSet,TreeSet 和 LinkedHashSet 的区别

        Set 不允许包含相同的元素,如果试图把两个相同的元素加入同一个集合中,add 方法返回false。

        Set 判断两个对象是否相等,使用 equals 方法,而不是使用 == 运算符。

        1、HashSet 

         不能保证元素的排序

         不是同步的

         集合元素可以是null,但只能放入一个null?

         根据该对象的hashCode() 方法得到该对象的 hashCode值,然后根据 hashCode 值来决定该对象在HashSet 中存储位置。

        2、LinkedHashSet

          以插入顺序保存。

          LinkedHashSet 在迭代访问Set 中的全部元素时,性能比 HashSet 好,但是插入时性能稍微逊色于 HashSet。

        3、TreeSet

         TreeSet 是 SortedSet 接口的唯一实现类,TreeSet 可以确保集合元素处于排序状态。

         TreeSet 支持两种排序方式,自然排序和定制排序。

          自然排序:使用要排序元素的 CompareTo (Object obj) 方法来比较元素之间大小关系,然后将元素按照升序排序。

          Java提供了一个Comparable接口,该接口定义了一个compareTo (Object obj) 方法,该方法返回一个整数值,实现了该接口的对象就可以比较大小。

          obj1.compareTo(obj2)

          返回0:相等;返回整数,大于;返回负数,小于。

          如果我们将两个对象的equals 方法总是返回true,则 compareTo 应该返回0 。       


三、HashMap,HashTable,LinkedHashMap 和 TreeMap

        Java 为数据结构中的映射定义了一个接口 java.util.Map;它有以上四个实现类。

        Map主要用于存储键值对,根据键得到值,因为不允许键重复,允许值重复。

        1、HashMap 

        它是一个最常用的Map,它根据键的 HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。

         HashMap 最多只允许一条记录的键为Null。

         HashMap 不支持线程的同步,即任一时刻可以有多个线程同时写 HashMap ;可能会导致数据不一致。

        如果需要同步,可以用Collections 的 synchronizedMap方法使 HashMap 具有同步的能力,或者使用 ConcurrentHashMap。

        2、HashTable

        Hashtable 和 HashMap 类似,它继承自 Dictionary 类,不同的是:它不允许记录的键或者值为空;

        它支持线程的同步,即任一时刻只有一个线程能写 Hashtable,因此也导致了 Hashtable 在写入时会比较慢。

        3、LinkedHashMap

       LinkedHashMap 是 HashMap 的一个子类,保存了记录的插入顺序,在用 Iterator 遍历 LinkedHashMap 时,先得到的记录肯定是先插入的。

       4、TreeMap

       TreeMap 实现 SortMap 接口,能够把它保存的记录 根据键排序,默认是按键值的升序排序。

       在用Iterator 遍历 TreeMap 时,得到的记录是排过序的。

                                                                                                                                                                                                                                                                                                                                                                                  

     

0 0
原创粉丝点击