Java 集合类型

 2023-09-06 阅读 31 评论 0

摘要:JAVA里面的集合框架 ArrayList ✅ LinkedList ✅ HashSet TreeSet EnumSet HashMap TreeMap EnumMap List ArrayList ArrayList封装了一个动态再分配的数组对象。【1】 ArrayList它的核心依赖于java中的数组。 以add()方法为例子,看源码。 LinkedList LinkedList的核心

JAVA里面的集合框架
ArrayList ✅
LinkedList ✅
HashSet
TreeSet
EnumSet
HashMap
TreeMap
EnumMap

List

ArrayList

ArrayList封装了一个动态再分配的数组对象。【1】

ArrayList它的核心依赖于java中的数组。
在这里插入图片描述
以add()方法为例子,看源码。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

LinkedList

LinkedList的核心是一组叫做Node类的对象,Node里面存放了具体的元素和对其他Node的指向,从而形成了一个LinedList,感觉比C语言容易了许多。
在这里插入图片描述

你可以观看源码,查看这些数据类型是否对多线程做了额外处理?没有处理多线程的情况。
就以LinkedList的add方法为例子来看源码。

在这里插入图片描述
在这里插入图片描述

关于为什么这些数据结构不弄成数据安全的,其实是一个取舍之道。因为与其代码在同步操作上耗费大量时间,不如再开一个模块专门写。

  1. 设计成同步的,效率低。
  2. 设计成非线程安全的,但是效率高。
  3. 再设计一个专门针对并发的concurrent模块,想要使用线程安全的类型,去那个模块下找。
    产品开发中也讲究取舍之道,又要用户体验好,又要上线时间快,怎么可能。

Set

Set背后其实涉及到很多技术细节。
散列表
散列冲突

装填因子
排序
红黑树

在这里插入图片描述

HashSet 和 TreeSet 性能比较

实践观察
插入1千万条基础数据类型int,观察响应时间

  • HashSet

  • TreeSet

在大量计算的情况下,必须要考虑算法

理论原理
HashSet

TreeSet


【1】《Java核心技术卷1》
我发现Java核心技术卷1是一本入门的好书。

【CSDN上面的文章有太多的功利心了,我表示理解,人生嘛就是这样,毕竟要恰饭的】
我对JDK源码的感觉,初闻不识曲中意,再闻已是曲中人。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/6776.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息