本网站(662p.com)打包出售,且带程序代码数据,662p.com域名,程序内核采用TP框架开发,需要联系扣扣:2360248666 /wx:lianweikj
精品域名一口价出售:1y1m.com(350元) ,6b7b.com(400元) , 5k5j.com(380元) , yayj.com(1800元), jiongzhun.com(1000元) , niuzen.com(2800元) , zennei.com(5000元)
需要联系扣扣:2360248666 /wx:lianweikj
Java集合详解(一):全面理解Java集合
talkchan · 235浏览 · 发布于2021-06-04 +关注

概述

Java所有集合类都在java.util包下,支持并发的集合在java.util.concurrent(juc)包下。

集合与数组区别:

  1. 数组大小是固定的,集合大小可以根据使用情况进行动态扩容。

  2. 数组可以存放基本数据类型,集合只能存放引用数据类型。

Java中集合分为单列集合(实现Collection接口)和双列集合(实现Map接口)两种形式,常用集合框架图如下图所示:

Map集合

  常用实现类有HashMap,HashTable,LinkedHashMap。

  • HashMap

  HashMap底层原理实现请参考:。

  1. 底层是基于数组和链表/红黑树实现的(jdk8采用的红黑树结构)。

  2. HashMap的key可以为null(因为key是不重复的所以只会仅存在一个),value可以存在多个null值。

  3. HashMap是线程不安全的。

  • HashTable

  1. 底层数据和HashMap是一样的。

  2. HashTable的key和value都不允许为null。

  3. HashTable是线程安全的。

  • LinkedHashMap

  1. LinkedHashMap 继承 HashMap,底层数据结构较HashMap多了一个双循环链表。

  2. LinkedHashMap 是有序。

  3. LinkedHashMap 的key可以为null(因为key是不重复的所以只会仅存在一个),value可以存在多个null值。

  4. LinkedHashMap 是线程不安全的。

  • ConcurrentHashMap

  1. ConcurrentHashMap是线程安全的,性能比HashTable好。

List集合

  常用实现类有ArrayList,LinkedList。

  • ArrayList

  1. ArrayList底层是基于数组实现的,查询快,增删慢。

  2. ArrayList是线程不安全的,效率高。

  • LinkedList

  1. LinkedList是基于链表实现的,查询慢,增删快。

  2. LinkedList是线程不安全的,效率高。

  • Vector

  1. Vector底层是基于数组实现的,查询快,增删慢。

  2. Vector是线程安全的,效率低(很少使用,面试有时候会问到)。

Set集合

  常用实现类有HashSet,TreeSet,LinkedHashSet。

  • HashSet

  1. HashSet是无序的(底层是根据hash算法进行排序的,对于我们来说它不能按照插入顺序或者数据大小进行排序,所以我们称为无序)。

  2. HashSet元素可以为null。

  3. HashSet是线程不安全的。

  • LinkedHashSet

  1. LinkedHashSet底层是基于链表和hash表实现的。

  2. LinkedHashSet是有序的。

  3. LinkedHashSet元素可以为null。

  4. LinkedHashSet是线程不安全的。

  • TreeSet

  1. TreeSet实现了SortedSet接口,采用的是红黑树算法进行排序的。

  2. TreeSet是有序的。

  3. TreeSet元素不能为null。

  4. TreeSet是线程不安全的,

Queue队列

  Queue是Java1.5开始引入的。常用实现类有ArrayQueue。


相关推荐

PHP实现部分字符隐藏

沙雕mars · 1327浏览 · 2019-04-28 09:47:56
Java中ArrayList和LinkedList区别

kenrry1992 · 912浏览 · 2019-05-08 21:14:54
Tomcat 下载及安装配置

manongba · 976浏览 · 2019-05-13 21:03:56
JAVA变量介绍

manongba · 965浏览 · 2019-05-13 21:05:52
什么是SpringBoot

iamitnan · 1092浏览 · 2019-05-14 22:20:36
加载中

0评论

评论
大家好,我是一名专注技术开发的技术屌丝,有什么问题可以互相交流,一起学习进步,谢谢。
分类专栏
小鸟云服务器
扫码进入手机网页