Collection、Set、List、Quene、Map之间的关系

关于Collection相关的知识总结。
一、关系
Collection
 Set:不能包含重复的元素
  --HashSet、LinkHashSet、TreeSet
 List:以特定顺序存储
  --ArrayList、LinkList、Vector
 Quene:
  --LinkedList、PriorityQuene
Map
 --HashTable、LinkHashMap、HashMap、TreeMap
collection
map
二、分解讲解
Collection子接口:Set,List,Quene。
 集合中只能放置对象的引用,不能放置原生数据类型, 我们需要使用原生数据类型的封装类才能加入到集合中。

Set(不可重复,大部分无序):
 HashSet:不能有重复元素,底层是使用HashMap来实现的;
 LinkedHashSet:是有不重复、非线程安全的集合,很方便的访问它的前驱节点和后继节点,但是需要更多的内存开销,并且删除和添加也会比较费时间;
 TreeSet:一个不同步的非线程安全的二叉树。

List (可重复的,有序):
 ArrayList:可变大小,允许null,不是同步的;
 Vector:类似于ArrayList,但Vector是同步的,Stack继承自Vector;
 LinkList:允许null元素,通常在首部或者尾部操作,所以常被使用做堆栈(stack)、队列(queue)和双向队列(deque)。

Queue接口与List、Set同一级别,都是继承了Collection接口,LinkedList实现了Deque接 口:
 PriorityQueue 类实质上维护了一个有序列表。加入到 Queue 中的元素根据它们的天然排序(通过其 java.util.Comparable 实现)或者根据传递给构造函数的 java.util.Comparator 实现来定位。
Map接口实现的Key到Value的映射,一个Map中不能包含相同的Key,每个Key只能映射一个Value:
 HashTable:实现了一个Key-Value的哈希表,每一个非null元素都可作为Key或者Value,HashTable是同步的;
 HashMap:数组+单链表的方式,无序的,查询效率快,插入效率慢;和HashTable的不同之处是,非同步的,且允许null元素的存在。
 LinkedHashMap是数组+双向链表,有序的,插入效率快,查询效率慢;
 TreeMap有序的集合,而且是一个红黑树结构,每个key-value都作为一个红黑树的节点。如果在调用TreeMap的构造函数时没有指定比较器,则根据key执行自然排序。

发布了6 篇原创文章 · 获赞 5 · 访问量 661

猜你喜欢

转载自blog.csdn.net/weixin_42585359/article/details/96601312