Java集合详解(一):全面理解Java集合
2021-05-24 15:00
956 查看
概述
Java所有集合类都在java.util包下,支持并发的集合在java.util.concurrent(juc)包下。
集合与数组区别:
- 数组大小是固定的,集合大小可以根据使用情况进行动态扩容。
- 数组可以存放基本数据类型,集合只能存放引用数据类型。
Java中集合分为单列集合(实现Collection接口)和双列集合(实现Map接口)两种形式,常用集合框架图如下图所示:
Map集合
常用实现类有HashMap,HashTable,LinkedHashMap。
-
HashMap
HashMap底层原理实现请参考:。
-
<
ad8
li>底层是基于数组和链表/红黑树实现的(jdk8采用的红黑树结构)。
- HashMap的key可以为null(因为key是不重复的所以只会仅存在一个),value可以存在多个null值。
- HashMap是线程不安全的。
-
HashTable
- 底层数据和HashMap是一样的。
- HashTable的key和value都不允许为null。
- HashTable是线程安全的。
-
LinkedHashMap
- LinkedHashMap 继承 HashMap,底层数据结构较HashMap多了一个双循环链表。
- LinkedHashMap 是有序。
- LinkedHashMap 的key可以为null(因为key是不重复的所以只会仅存在一个),value可以存在多个null值。
- LinkedHashMap 是线程不安全的。
-
ConcurrentHashMap
- ConcurrentHashMap是线程安全的,性能比HashTable好。
List集合
常用实现类有ArrayList,LinkedList。
-
ArrayList
- ArrayList底层是基于数组实现的,查询快,增删慢。
- ArrayList是线程不安全的,效率高。
-
LinkedList
- LinkedList是基于链表实现的,查询慢,增删快。
- LinkedList是线程不安全的,效率高。
-
Vector
- Vector底层是基于数组实现的,查询快,增删慢。
- Vector是线程安全的,效率低(很少使用,面试有时候会问到)。
Set集合
常用实现类有HashSet,TreeSet,LinkedHashSet。
-
HashSet
- HashSet是无序的(底层是根据hash算法进行排序的,对于我们来说它不能按照插入顺序或者数据大小进行排序,所以我们称为无序)。
- HashSet元素可以为null。
- HashSet是线程不安全的。
-
LinkedHashSet
- LinkedHashSet底层是基于链表和hash表实现的。
- LinkedHashSet是有序的。
- LinkedHashSet元素可以为null。
- LinkedHashSet是线程不安全的。
-
TreeSet
- TreeSet实现了SortedSet接口,采用的是红黑树算法进行排序的。
- TreeSet是有序的。
- TreeSet元素不能为null。
- TreeSet是线程不安全的,
Queue队列
Queue是Java1.5开始引入的。常用实现类有ArrayQueue。
相关文章推荐
- JAVA基础-其全面详解Java基础知识(二)
- 全面理解String(JAVA复习)
- Java集合的排序和HashCode方法详解
- JAVA基础-其全面详解Java基础知识(一)
- java集合详解
- Java集合的排序和HashCode方法详解
- java_集合体系之Collection框架相关抽象类接口详解、源码——02
- 全面接触Java集合框架
- JAVA基础-其全面详解Java基础知识(一)
- java关于集合的详解
- java中集合常用类及其详解
- 对java集合的理解
- Java学习系列(八)Java面向对象之集合框架详解(下)
- java_集合体系之Stack详解、源码及示例——06
- Java集合容器全面分析
- 全面理解Java中的String数据类型
- 理解JAVA的集合类型
- Java常用集合详解
- jdk命令集合详解(有关其他的java/bin中的*.exe讲解)
- 全面理解Java中的String数据类型