为了账号安全,请及时绑定邮箱和手机立即绑定

Java集合详解(一):全面理解Java集合

标签:
Java

概述

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。

作者: Yanci丶
出处:https://www.cnblogs.com/Y2EX/p/14782768.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消