资讯专栏INFORMATION COLUMN

Java 集合总结(Collection系列与Map系列)

zhou_you / 1811人阅读

摘要:前言原文在点这里,这也是作者的个人网站,希望多多支持,对于作者而言,集合主要分为两个派系,一个是系列,一个是系列。的线程安全版本,内部的实现几乎和一模一样。也是的线程安全版本,并且使用了分段加锁机制,所以效率上要比要好很多。

前言

原文在: 点这里,这也是作者的个人网站,希望多多支持,O(∩_∩)O~

对于作者而言,Java 集合主要分为两个派系,一个是 Collection 系列,一个是 Map 系列。

Collection 系列

如下图所示:

那么对于他们的特点,简单来说可以概括为:

Collection:它是一个根接口,JDK没有它的实现类,内部仅仅做 add(),remove(),contains(),size() 等方法的声明。

List:它继承于 Collection,增加了可以对每个元素插入的位置进行精确的控制的方法,另外,插入的值允许为空,也允许有重复的值。

实现类 实现方式 是否同步 是否支持插入空值 元素是否支持重复
ArrayList 数组 不同步 支持 支持
Vector 数组 同步 支持 支持
LinkedList 链表 不同步 支持 支持

那么对于每一个类(接口)的细节,可以看:

Java 集合:Collection,List,ArrayList,Vector,LinkedList(实现方式,对比)

Map

那么对于他们的特点,简单来说可以概括为:

HashMap:最常用的 Map,非同步,不保证顺序。允许有空值和空键。 采用链表法解决哈希冲突,并且在发生哈希冲突的时候,新的 Node 会加入到链表的最下端;在 JDK8 中哈希冲突过多的情况下链表会变成红黑树从而保证效率;

LinkedHashMap:继承HashMap,Iterator下 能保证插入的先后顺序,原理是在LinkedHashMap中加入了链表,并且该链表还是一个双向链表。

TreeMap:能够根据 key 值来有序插入 (也就是键值对会根据key排序好),原理使用了红黑树,每次插入都会对树进行调整。

HashTable:HashMap的线程安全版本,内部的实现几乎和 HashMap 一模一样。但是由于其同步是使用了 synchronized,效率较低。

ConcurrentHashMap:也是HashMap的线程安全版本,并且使用了分段加锁机制,所以效率上要比HashTable要好很多。

那么对于每一个类(接口)的细节,可以看:

Java 集合:HashMap(put方法的实现 与 哈希冲突)

Java 集合:LinkedHashMap 工作原理及实现(转载)

Java 集合:HashSet,HashTable,以及 ConcurrentHashMap 概念

Java 集合:TreeMap 工作原理及实现(转载)

最后

作者也是一名Java新手,上述有些是基于自己的理解作出的总结,有些是转载别人的文章,如果有什么错误的地方,还麻烦各位斧正,由于没做评论的功能,所以暂时 github issue 地址:点这里

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64911.html

相关文章

  • java源码

    摘要:集合源码解析回归基础,集合源码解析系列,持续更新和源码分析与是两个常用的操作字符串的类。这里我们从源码看下不同状态都是怎么处理的。 Java 集合深入理解:ArrayList 回归基础,Java 集合深入理解系列,持续更新~ JVM 源码分析之 System.currentTimeMillis 及 nanoTime 原理详解 JVM 源码分析之 System.currentTimeMi...

    Freeman 评论0 收藏0
  • Java集合总结【面试题+脑图】,将知识点一网打尽!

    摘要:而在集合中,值仅仅是一个对象罢了该对象对本身而言是无用的。将这篇文章作为集合的总结篇,但觉得没什么好写就回答一些面试题去了,找了一会面试题又觉得不够系统。 前言 声明,本文用的是jdk1.8 花了一个星期,把Java容器核心的知识过了一遍,感觉集合已经无所畏惧了!!(哈哈哈....),现在来总结一下吧~~ 回顾目录: Collection总览 List集合就这么简单【源码剖析】 Ma...

    yearsj 评论0 收藏0
  • kotlin学习笔记-异常好玩的list集合总结

    摘要:可能是最流行的集合类型。它是一个范性有序的集合。一个无序并不支持重复的集合。接口继承接口,集合中可以存放重复对象。集合类提供了,等高阶函数去处理。我们声明一个集合或者数组,可以转换成相应类型的集合。调用转换为可变集合。 不积跬步无以至千里,不积小流无以成江海 先看看Kotlin中for循环的遍历 fun testList(){ var StringVal = 12_...

    RebeccaZhong 评论0 收藏0
  • 集合框架知识系列01 总体框架

    摘要:集合工具包是在包中,实现了数据结构数组栈链表队列映射和集合。集合主要可以划分为个部分列表集合映射工具类迭代器枚举类和。集合的框架图如下图片来源集合顶层接口主要有和。和都是集合遍历相关接口,是特有的遍历工具接口 Java集合工具包是在java.util.*包中,实现了数据结构:数组、栈、链表、队列、映射和集合。Java集合主要可以划分为4个部分:List列表、Set集合、Map映射、工具...

    honhon 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<