day08 collection 集合(续)

本文深入讲解了Java集合框架中的各种集合类型,包括ArrayList、Vector、LinkedList、HashSet、TreeSet等的特点及应用场景,并详细介绍了Map集合的工作原理,特别是HashMap如何解决哈希冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、collection集合

1.ArrayList 与vector 特点

1) 底层是数组,数组的特点是访问快,添加删除慢

数组插入数据步骤
其次 对于Arraylist 和vector 也有一些区别

2)vector是线程安全的 ,ArrayList 不是线程安全的
3)初始化大小 都是10
4) 扩容 ArrayList 按1.5倍 扩容 ,vector 按2倍大小扩容

2.记住linkedlist

底层是双向链表,访问慢,添加删除效率高
【双向链表原理】
增加了针对第一个 元素/最后一个元素的操作

3.set集合

set集合 无序不可重复
无序是指存储顺序与添加顺序可能不一样
不能存储重复的数据

4. hashSet特点

底层是hashMap
向hashSet添加元素就是把元素作为键添加到底层的hashMap 中
hasSet就是hashMap 键的集合

5.TreeSet特点

①实现SortedSet 接口,可以对集合中的元素自然排序,要求元素必须是可比较的。
1)在构造方法中指定comparator 比较器
2)如果没有在构造方法中指定Comparator 比较器,要求元素的类实现了computerable 接口
②TreeSet 底层就是TreeMap
③向TreeSet添加元素就是把元素作为键添加到底层的TreeMap中
④TreeSet就是TreeMap键的集合

二、Map集合

Map集合的形式 :map集合按 < 键,值> 对的形式存储数据
在这里插入图片描述

1) HashMap 工作原理

Map的put原理
HashMap 底层是哈希表,哈希表是一个数组,数组的每一个元素是单向链表,结合了数组与单向链表的优点。

HashMap是如何解决哈希冲突(哈希碰撞)的?(重要)
采用链表法
不同键的hashCode()返回值可能相同, 即键不一样,得到的哈希可能一样; 不同的哈希码经过hash函数得到hash值可能一样; 不同的hash值计算出的数组下标可能一样. 不同的键值对在数组中存储的位置(计算得出的数组下标)可能相同, 这就是哈希碰撞(哈希冲突)**

Map集合的后续知识点下次在探讨一下

day08,晚安咯 ~~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值