集合框架

一、集合框架的分类:

  1 Collection(单列集合)

      1 List --> 有序,可重复 

        1 ArrayList

          底层结构数组,查询块,增删慢

          线程不安全,效率高。

        2 LinkedList
          底层结构链表,查询慢,增删块

          线程不安全,效率高。

      2 Set --> 无序,不可重复(唯一)

        1 HashSet 

          底层结构哈希表。

          哈希表依赖两个方法:一个是HashCode(),一个是equals()。

          首先执行HashCode(),判断值是否相同,

            是:继续执行equals(),判断返回值,

              true:说明元素已经存在。

              false:直接添加到集合中。

            否:直接添加到集合中。

          最终:自动生成HashCode()和equals()即可。

          LinkedHashSet:

            底层数据结构由链表和哈希表组成。链表保证元素有序。哈希表保证元素唯一。

        2 TreeSet

          底层数据结构是红黑树。(是一种自平衡的二叉树)

          如何保证数据唯一:

            根据比较的返回值是否是0来决定。

          如何保证数据有序:

            两种方式:

              自然排序(元素具备比较性):

                让元素所属的类实现Comparable接口。

              比较器排序(集合具备比较性):

                让集合接收一个Comparator的实现类对象。

  2 Map(双列集合)

      Map集合数据结构仅仅针对键有效,与值无关。

      1 HashMap:       

        底层结构哈希表。线程不安全,效率高。

          哈希表依赖两个方法:一个是HashCode(),一个是equals()。

          首先执行HashCode(),判断值是否相同,

            是:继续执行equals(),判断返回值,

              true:说明元素已经存在。

              false:直接添加到集合中。

            否:直接添加到集合中。

          最终:自动生成HashCode()和equals()即可。

        LinkedHashMap:

            底层数据结构由链表和哈希表组成。链表保证元素有序。哈希表保证元素唯一。

      2 HashTable:

        底层结构哈希表。线程安全,效率低。

          哈希表依赖两个方法:一个是HashCode(),一个是equals()。

          首先执行HashCode(),判断值是否相同,

            是:继续执行equals(),判断返回值,

              true:说明元素已经存在。

              false:直接添加到集合中。

            否:直接添加到集合中。

          最终:自动生成HashCode()和equals()即可。

      3 TreeMap:

        底层数据结构是红黑树。(是一种自平衡的二叉树)

        如何保证数据唯一:

          根据比较的返回值是否是0来决定。

        如何保证数据有序:

          两种方式:

            自然排序(元素具备比较性):

              让元素所属的类实现Comparable接口。

            比较器排序(集合具备比较性):

              让集合接收一个Comparator的实现类对象。

猜你喜欢

转载自www.cnblogs.com/laowangc/p/8888471.html
今日推荐