zoukankan      html  css  js  c++  java
  • java集合复习

    java中集合主要有set,list,Map三种,其中List,Set继承自Collection接口,list,set是一个接口,关系如下图所示:

    一、List集合

    list是一个集合接口,他主要有两个实现类,分别为ArrayList,LinkedList。
    List主要特点如下:
    1、list中按照索引位置排序。即list是有序的。
    2、可以有重复的元素。
    3、可以在集合中按照索引位置来检索元素。例如通过list.get(i)的方式来获得集合中的某一个元素。
    各实现类特点:

    • ArrayList
      优点: 底层数据结构是数组,查询快,增删慢。
      缺点: 线程不安全,效率高。
    • Vector
      优点: 底层数据结构是数组,查询快,增删慢。
      缺点: 线程安全,但效率低。
    • LinkedList
      优点: 底层数据结构是链表,查询慢,增删快。
      缺点: 线程不安全,但效率高。

    二、Set集合

    set接口继承自Collection接口,有两个实现类分别为HashSet、TreeSet。LinkedHashSet继承自HashSet接口实现Set接口。

    set主要特点如下:
    1、元素无序。
    2、元素唯一无重复。
    各实现类特点:

    • HashSet
      1.底层数据结构是哈希表。
      2.依赖两个方法hashCode()和equals()来保证元素唯一性。
      3.存储无序,唯一。
      4.底层实现是HashMap。
      5.线程不安全。

    • LinkedHashSet
      1.底层数据结构是链表和哈希表。
      2.由链表保证元素有序。
      3.由哈希表保证元素唯一。
      4.元素存放顺序和取出顺序一致。
      5.查询慢,增删快。

    • TreeSet
      1.底层数据结构是红黑树。
      2.元素唯一,且有序,内部会自动排序。

    TreeSet的主要功能用于排序
    LinkedHashSet的主要功能用于保证FIFO即有序的集合(先进先出)
    HashSet只是通用的存储数据的集合
    HashSet插入数据最快,其次LinkHashSet,最慢的是TreeSet因为内部实现排序

    三、Map集合

    Map接口有三个比较重要的实现类,分别是HashMap、TreeMap和HashTable。LinkedHashMap继承自HashMap。
    TreeMap是有序的,HashMap和HashTable是无序的。
    Hashtable的方法是同步的,HashMap的方法不是同步的。这是两者最主要的区别。
    这就意味着:
    Hashtable是线程安全的,HashMap不是线程安全的。
    HashMap效率较高,Hashtable效率较低。
    如果对同步性或与遗留代码的兼容性没有任何要求,建议使用HashMap。 查看Hashtable的源代码就可以发现,除构造函数外,Hashtable的所有 public 方法声明中都有 synchronized关键字,而HashMap的源码中则没有。
    Hashtable不允许null值,HashMap允许null值(key和value都允许)
    父类不同:Hashtable的父类是Dictionary,HashMap的父类是AbstractMap。

    参考博文:
    (1) https://www.jianshu.com/p/63b01b6379fb (List集合详情)
    (2) https://blog.csdn.net/zhangqunshuai/article/details/80660974 (list各实现类特性)

  • 相关阅读:
    MYSQL之查询篇
    MYSQL之概念基础篇
    订餐系统之组合捜索
    订餐系统之微信点餐
    订餐系统之定时器Timer不定时
    订餐系统之地图订餐
    结构型模式:装饰模式
    结构型模式:组合模式
    结构型模式:桥接模式
    结构型模式:适配器模式
  • 原文地址:https://www.cnblogs.com/jasonboren/p/12514294.html
Copyright © 2011-2022 走看看