day08 collection 集合(续)

一、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、付费专栏及课程。

余额充值