> 文档中心 > 聊聊List , Set ,Map的关系

聊聊List , Set ,Map的关系


聊聊List , Set ,Map的关系

结构图

请添加图片描述

Collection

聊聊List , Set ,Map的关系

List

聊聊List , Set ,Map的关系

Vector

聊聊List , Set ,Map的关系

Vector 继承 AbstractList 类,间接实现自 List 接口

ArrayList

聊聊List , Set ,Map的关系

ArrayList 继承 AbstractList 类,实现了List接口

LinkedlList

聊聊List , Set ,Map的关系

LinkedlList 继承 AbstractSequentialList 类,实现了 List 接口

Set

聊聊List , Set ,Map的关系

HashSet

聊聊List , Set ,Map的关系

HashSet 继承 AbstractSet 类,实现了 Set接口

TreeSet

聊聊List , Set ,Map的关系
TreeSet 继承 AbstractSet 类,间接实现 Set接口

Map

聊聊List , Set ,Map的关系

HashMap

聊聊List , Set ,Map的关系
HashMap 继承 AbstractMap类,实现 Map接口

Hashtable

聊聊List , Set ,Map的关系

Hashtable继承 Dictionary类,实现 Map接口

ConcurrentHahsMap

聊聊List , Set ,Map的关系
Hashtable继承 AbstractMap类,间接实现了 Map接口

总结

  1. List接口:存储有序的、可重复的数据 ---->"动态"数组

    • ArrayList:作为List的主要实现类;线程不安全的,效率高;底层使用数组实

    • LinkedList:对于频繁的插入、删除操作,我们建议使用此类,因为效率高;底层使用双向链表实现

    • Vector:List的古老实现类;线程安全的,效率低;底层使用数组实现

  2. Set接口 :相对无序存储,不可以存储相同的元素(排重),不能通过下标访问

    • HashSet特点:相对无序存储,不可以存储相同元素(排重),通过哈希表实现的集合
    • LinkedHashSet特点: 相对有序存储,不可以存储相同元素(排重),通过链表实现的集合
    • TreeSet特点:唯一有序,实现了SortedSet接口,自动排序
  3. Map接口:元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。

    • HashMap是线程不安全的,效率高,HashMap可以存储null键和null值

    • Hashtable是线程安全的,效率低,Hashtable不可以存储null键和null值

    • ConcurrentHashMap 采用了分段锁技术,不会像 HashTable 那样不管是 put 还是 get 操作都需要做同步处理,

      好处就是线程安全的同时提高效率
      ConcurrentHashMap 采用了分段锁技术,不会像 HashTable 那样不管是 put 还是 get 操作都需要做同步处理,

      好处就是线程安全的同时提高效率