java--ArrayList、LinkedList、HashSet、HashMap、Hashtable、Collection、Collections详解

3 篇文章 1 订阅
订阅专栏

1.ArrayList

ArrayList是List接口的实现类,一种大小可变数组,随着元素的增多,容量会自动扩充,默认初始容量值是10,也可以自己指定初始容量

采用的数据结构:数组
(线性表:数组、链表、队列、栈
非线性表:二叉树、堆、图等)

ArrayList优点:
查询速度快
ArrayList缺点:
新增和删除元素比较慢

查询速度快的原因:
ArrayList底层是数组实现的,根据下标查询,不需要比较,查询方式为,首地址+(元素长度*下标),基于这个位置读取相应的字节数,所以非常快;

新增和删除慢的原因:
增删会带来元素的移动,增加数据会向后移动,删除数据会向前移动,所以影响效率

适用场景:
如果应用程序对数据有较多的随机访问使用ArrayList较好

2.LinkedList

LinkedList也是List接口的实现类,和ArrayList功能类似,但LinkedList新增几个功能 ,如addFirst(),addLast(),getFirst(),getLast()等

数据结构:双向链表

链式存储,在内存中不是连续存储的,每个元素存储包括三部分,前一个元素的内存地址、数据部分、后一个元素内存地址,因此在进行元素的新增和删除时效率比较高,但查询时比较慢
链式存储方式与数组的连续存储方式相比,其实对内存的利用率更高

3.HashSet

HashSet是Set接口的实现类,最大的特点就是内部元素无序、并且不能重复(重复添加的话调用add()方法会返回false,添加失败),默认初始容量16

HashSet数据结构:哈希表(数组+链表)

HashSet存储原理:

Set set=new HashSet();
set.add(object);

存储过程为:
定义x=object.hashCode,得到obj对象的哈希码x,再对x进行hash散列运算,对数组长度进行求余,假如长度为20,则返回一个0-19之间的值,然后这个值就是存在HashSet数组中的下标。如果下标位置没有对象,则把object加到该位置;如果已有对象,则用equals判断两对象是否相等,相等则舍弃object,不相等,则把object以链表的方式加在该对象下面

原则1:让equals相等的对象返回相同的hashCode(为了过滤掉相等的元素)
原则2:尽量保证equals不相同的对象返回不同的hashCode(为了添加不同的元素)
存储过程图解如下:
在这里插入图片描述
HashSet的add()方法底层使用的是HashMap的存储方式,看源码可以知道
在这里插入图片描述
add()方法
在这里插入图片描述

4.HashMap

map是存放键值对的。
HashMap是Map接口的实现类,也是采用了hash算法。

其实向HashSet中放值,就是向HashMap中放值

Key不可以一样,如果key一样,在内存中存储的位置相同,后一个会把前一个key覆盖,value可以一样
key和value均可以为null
HashMap的存储键的过程和HashSet一样,不过HashMap在根据key获取value时的原理如下:
前面也是根据对象获取哈希码,进行哈希运算求下标(哈希码%容量),如果下标位置只有一对key-value,就直接取得value,如果有多个key-value键值对,然后再根据key获取value。

HashMap的数据结构
数组+单链表(数组中的每个元素都是单链表的头节点)
使用链表的原因是解决哈希冲突的(即不同的key映射到了数组的同一位置处,就将其放入单链表中)
在这里插入图片描述
ConcurrentHashMap

HashMap是线程不安全的
Hashtable是HashMap的兄弟。HashMap跟HashTable用法基本一样

它们两个区别就是HashTable是线程安全的

线程安全:
10个人同时操作HashTable,只有一个人操作,剩下的九个人等待。操作完毕后,剩下的9个人中的一个人操作HashTable,剩下8个人等待

线程不安全:
10个人同时操作

例子: 第一个人拿原始值, 如10
第二个人修改原始值 10-》20

如果二个人修改了原始值,会造成后面的人再拿数据时,会拿到第二个人修改后的数据(脏数据)

5.Hashtable

Hashtable和HashMap功能类似,都是用来保存键值对,但两者之间又有区别
区别:
1.Hashtable中不允许保存null的,而HashMap可以保存空的null和value
2…Hashtable线程安全
HashMap线程不安全
3.Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。但二者都实现了Map接口

6.Collection

collection是list和set接口的父接口,是一个集合接口

7.Collections

Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类
常用方法如下:
Collections.sort()
Collections.reverse()
Collections.binarySearch()方法
为二分法查找,所以数组必须是有序的或者是用sort()方法排序之后的。
binarySearch(Object[], Object key)
方法的object[]参数是要查找的数组,key参数为要查找的key值。

ArrayListLinkedList的区别,HashMapHashSet , HashTable的区别
qq_21389487的博客
04-25 661
1.ArrayListLinkedList 的区别 1.1:arraylistlinkedlist 的区别 arraylist 底层是基于动态数组,根据下表随机访问数组元素的效率高,向数组尾部添加元素的效率高;但是,删除数组中的数据以及向数组中间添加数据效率低,因为需要移动数组。例如最坏的情况是删除第一个数组元素,则需要将第2至第n个数组元素各向前移动一位。而之所以称为动态数组,是因为...
Java 容器(HashMapHashSetLinkedListArrayList)原理与对比
lifeidroid的专栏
05-29 593
HashMap HashSet LinkList 原理总结: 1、数据存储基于双向链表的数据结构,查询慢,增删快。线程不安全。 2、插入数据很快。先是在双向链表中找到要插入节点的位置index,找到之后,再插入一个新节点。 双向链表查找index位置的节点时,有一个加速动作:若index < 双向链表长度的1/2,则从前向后查找; 否则,从后向前查找。 add(E)添加到末尾,复杂度O(1); add(index, E)添加第几个元素后,需要先查找到第几个元素,直接指针指...
javaSE之集合框架(2)集合常用实现类学习指南,包括ArrayListLinkedList,HashMapHashSet等常用集合,以及工具类Collections,Iterator等等
qq_37795916的博客
03-12 322
集合常用实现类 1. Collections 1.1 概念 是什么 是个java.util下的类,是针对集合类的一个工具类,提供一系列静态方法,实现对集合的查找、排序、替换、线程安全化(将非同步的集合转换成同步的)等操作。 2.2 常用方法 sort(Collection,[Comparator]): 对集合进行排序。 reverse(List list): 反转集合中的元素。 shuffle(Collection): 对集合进行随机排序。 fill(List list, Object
JAVAHashSet 详解
最新发布
weixin_37559642的博客
08-13 1043
HashSet 详解
Java笔记之--ArrayListLinkedListHashSet, HashMap的理解以及常用方法
XJ200012的博客
01-03 1345
引入:如何创建对象 // ArrayList<E> objectName =new ArrayList<>();  // 初始化 ArrayList<String> sites = new ArrayList<String>(); // LinkedList<E> list = new LinkedList<E>(); // 普通创建方法 或者 LinkedList<E> list = new LinkedList(C
java集合对比——ArrayListLinkedListHashSetHashMap
yinhaoh的博客
08-31 376
结构 ArrayList:数组Object[] LinkedList:链表Node HashSetHashMap<E,Object> HashMap:(数组+链表)Node<K,V>[]+红黑树TreeNode 根据结构就能看出ArrayList使用索引在数组中搜索和读取数据是很快的,可以直接返回数组中index位置的元素,随机访问快,但是删除、插入需要移动后面的元素,开销大。LinkedList每次都要遍历查找,所以查询慢,但是因为存储位置是用指针指向,插入删除快,也因为指针所以
ArrayListLinkedListHashSetHashMap底层内部数据结构
Mx哈哈哈的博客
07-09 1133
一、ArrayList ArrayList的底层数据结构就是一个数组,数组元素的类型为Object类型,对ArrayList的所有操作底层都是基于数组的。 二、LinkedList Java中的LinkedList类实现了List接口和Deque接口,是一种链表类型的数据结构,支持高效的插入和删除操作,同时也实现了Deque接口,使得LinkedList类也具有队列的特性。LinkedList类的底层实现的数据结构是一个双端的链表。 LinkedList类中有一个内部私有类Node,这个类就代表双端链表的节
(集合,Collection,List--ArrayList&LinkedList,泛型,Set--HashSet,Collections工具类)2020.10.27-29
hxc2u的博客
10-27 258
目录集合框架Collection 集合框架 集合理解为是:容器。 集合和数组的区别: 数组:  1.存储基本类型或引用类型都可以  2.创建数组时,只能存储同一种类型的数据  3.容器大小是固定的,不能改变  4.数组中的元素通过下标来操作 集合:  1.只能存储引用类型  2.创建集合时,可以存储不同类型的数据  3.容器大小是可变的  4.有的容器有下标,有的没有下标 集合框架:  java.util包 单列集合:  Collection   --List :有序可重复,有序指的是存入的顺序和取出的顺序
JAVA-Collections:馆藏框架
03-19
Java集合框架还包含了一些特殊的集合实现,如LinkedList、Stack(基于LinkedList实现)、Vector(线程安全的ArrayList)和Hashtable(线程安全的HashMap)。此外,PriorityQueue提供了一种基于优先级堆的数据结构,...
java-code Java语言程序.zip
06-16
- **HashMap, HashTable**: 键值对存储,快速查找。 - **Set, TreeSet, HashSet**: 不允许重复元素的集合。 - **Queue, PriorityQueue**: 队列数据结构,先进先出(FIFO)。 6. **多线程(Multithreading)** -...
LinkedList,ArrayList,HashMap,TreeMap,LinkedHashMap,HashSet之间区别
qq_33015379的博客
08-15 1696
一.  集合相关技术,LinkedList,ArrayList,HashMap,TreeMap,LinkedHashMap,HashSet,之间的区别,以及各个集合的实现原理,以及更好的实现方式。 集合可以理解为一个容器,这种容器主要指映射(Map),集合(Set),列表(List),散列表(Hashtable)。 Collection接口有三个常用的子接口,Set(集合),List(列表),
java之集合ArrayList,LinkedList,HashMap运用
weixin_45137910的博客
06-13 827
学习java的第十三天1、定义歌曲类,属性:歌曲名、歌手名、播放时长(int 类型),定义play方法显示歌曲信息。2、将集合改为HashMap,将歌名作为键,歌曲作为值 1、定义歌曲类,属性:歌曲名、歌手名、播放时长(int 类型),定义play方法显示歌曲信息。 // 1、添加10首歌到ArrayList集合中 // 2、遍历所有的歌曲,显示歌曲信息 // 3、输入歌曲名,在集合中...
java ArrayList,HashMap, LinkedList的简单概括与分析(二)
weixin_43217817的博客
09-22 213
思来想去还是决定先谈谈 LinkedList,因为hashmap实际上是链表和数组的特殊结合,如果不讲链表,直接讲hashmap,感觉有点太随意了,话不多说,linkelist,是我们日常生活中比较常见的链表,要理解他,首先就要谈谈链表到底是什么。 众所周知,数组的概念就是内存中一段连续的地址,计算机可以方便的读取地址中的数据,对于查找数据来说这无疑是很方便的一种结构,只要遍历过去即可完成查找,但...
Java集合之ArrayList,LinkedList,HashMap,HashSet
weixin_34284188的博客
04-14 167
2019独角兽企业重金招聘Python工程师标准>>> ...
Java里多个Map的性能比较(TreeMap、HashMap、ConcurrentSkipListMap)
上尚若水
05-21 1574
参考 http://blog.hongtium.com/java-map-skiplist/
Java集合系列之四大常用集合(ArrayListLinkedListHashSetHashMap)的用法
良月柒
12-15 2721
ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本。ArrayList 是以数组实现的,遍历时很快,但是插入、删除时都需要移动后面的元素,效率略差些。它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和IList接口 灵活的设置数组的大小 不是同步容器 按照插入顺序来保存元素,可以利用下标来查找值 按照下标...
ArrayList,LinkedList,HashSetHashMap的优缺点 原理 如何选择使用
小马哥(新博客地址 http://maruifu.cn )
10-07 4571
ArrayList, 基于可变数组的 值 10 15 20 25 30 下标 0 1 2 3 4 优点:根据下标的检索速度非常快 缺点:插入和删除元素的时候比较慢,需要比较大的连续的内存空间 根据下标检索比较快的原因,因为数组的地址分配是连续的,数组中的元素类型是一致的,所以每个元素的长度是一致的,如果我们的数组是int类型的数组,那么每个元素的字节长
HashMap,Hashset,ArrayList以及LinkedList集合的区别,以及各自的用法
dgd29756的博客
06-18 690
基础内容 容器就是一种装其他各种对象的器皿。java.util包 容器:Set, List, Map ,数组。只有这四种容器。 Collection(集合) 一个一个往里装,Map 一对一对往里装。 Set:没有顺序,不可以重复。 List:有顺序,可以重复。 互相的equals就算重复。 Map定义了存储Key-Value的方法。 Collection里装的必须都是Object,不能是...
List,Set,Map,ArraylistLinkedList ,HashMapHashtable ,HashMapHashSet比较区别
lijiaqi0612的博客
10-03 234
说说List,Set,Map三者的区别? List(对付顺序的好帮手):List接口存储一组不唯一(可以有多个元素引用相同的对象),有序的对象 Set(注重独一无二的性质):不允许重复的集合。不会有多个元素引用相同的对象。 Map(用Key来搜索的专家):使用键值对存储。Map会维护与Key有关联的值。两个Key可以引用相同的对象,但Key不能重复,典型的Key是String类型...
深入理解Java集合框架:ArrayList, LinkedList, HashMap与Iterator
"Java集合框架是Java编程语言中用于存储和操作对象的统一框架,它包含了一系列接口和类,如CollectionList、Set、Map,以及实现这些接口的具体类如ArrayListLinkedListHashMap等。这个框架提供了一种高效且...
90
原创
2440
点赞
1572
收藏
392
粉丝
关注
私信
写文章

热门文章

  • java--ArrayList、LinkedList、HashSet、HashMap、Hashtable、Collection、Collections详解 10069
  • java数据库连接技术(JDBC) 9935
  • ssm框架从controller层返回json格式数据到页面 9753
  • 使用IDEA搭建ssm框架 7877
  • 谈谈python子类能继承父类哪些属性和方法(新理解) 7504

分类专栏

  • oracle 7篇
  • spring框架相关 7篇
  • springcloud 3篇
  • springBoot 4篇
  • SpringBoot+Mybatis 1篇
  • shiro 1篇
  • nginx 1篇
  • docker 1篇
  • ssm 3篇
  • git 1篇
  • mybatis 4篇
  • mysql 1篇
  • 设计模式 2篇
  • java反射 1篇
  • jsp 4篇
  • 数据库连接技术 2篇
  • java基础 3篇
  • XML 2篇

最新评论

  • ssm使用富文本框上传图片到数据库并显示到界面

    LuYuii: 大佬牛👃🏻!

  • 简单的学生选课模拟系统(java)

    wmxjjzkp: 上面那个表用到的是哪个应用

  • java数据库连接技术(JDBC)

    卍·寧: 真tm会拍马屁

  • java--ArrayList、LinkedList、HashSet、HashMap、Hashtable、Collection、Collections详解

    鸟厂: 666666表情包表情包表情包表情包表情包表情包

  • springcloud多种注解介绍

    小鲍侃java: 写的好啊,以三连,望互粉

最新文章

  • springcloud多种注解介绍
  • java springCloud控制层访问https下的html文件并以流显示到页面
  • IDEA搭建springcloud
2021年2篇
2020年44篇
2019年45篇

目录

目录

评论 101
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家西宁玻璃钢雕塑在哪找正宗玻璃钢雕塑诚信企业抽象玻璃钢雕塑清远玻璃钢雕塑有哪些成都节日商场美陈上海特色商场美陈哪里买武汉景区玻璃钢雕塑制作仿石头玻璃钢花盆玻璃钢雕塑工艺工厂贵阳玻璃钢景观雕塑经验丰富龙岩玻璃钢花盆花器北票玻璃钢雕塑玻璃钢雕塑能透光吗天津玻璃钢人物雕塑溧水商场户外美陈江苏玻璃钢卡通雕塑临汾玻璃钢海豚雕塑厂家商场美陈夏季宣城校园玻璃钢雕塑焦作玻璃钢卡通雕塑制造南昌创意玻璃钢雕塑商场灯光亮化美陈方案衢州玻璃钢雕塑报价玻璃钢牛雕塑公司起跑玻璃钢雕塑玻璃钢小品雕塑哪家有儿童卡通体育玻璃钢雕塑雕塑铜铸造和玻璃钢的优劣对比天津卡通玻璃钢雕塑定制成都玻璃钢卡通雕塑价格香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化