java 集合,List,set


List 集合


有序集合也称为序列,用户可以精确控制列表中每个元素的插入位置,用户可以通过整数索引访问元素并搜索列表中的元素
List 集合的特点:


1. 有序,存储和取出的元素顺序一致!


2.可重复,存储的元素可以重复!


add.all:把别人的数据添加给自己
Collection 没有索引
Iterrator 迭代器
Iterator<E> x= list.iterator(); 
增强for循环
既可以遍历集合也可以遍历数组
迭代器、增强for、Lambda遍历集合的区别说明
遍历删除用迭代器
如果只为遍历 迭代器、增强for、Lambda都可以!
Lambda 底层也基于增强for
增强for 只能遍历不能删除
List集合
List集合特点:可重复,有索引,
List 有索引
 遍历:list.size.fori
ArrayList集合 底层是数组
根据索引找寻快增删慢
链表
链表的特点:查询慢无论查询哪个数据都需要从头开始找
单向链表和双向链表 查询慢,增删快,对首位增删速度极快
LinkedList底层基于链表
适合首尾增删多的业务场景
Node 代表链表的节点
链表怎么遍历呢?
Set:
HashSet:无序、不重复、无索引


LinkedHashSet:有序、不重复、无索引
哈希值:

就是一个int类型的数值,Java中每个对象有有一个哈希值
不同对象的哈希值一般是不同的,也有可能是相同的概率很小
什么红黑树? 链表长度超过8 时。并且长度小于等于64时。自动将链表转为红黑树
分为根元素  小的往左走 大往右走 可以让数据更均匀
可以提高性能 增删改查效率跟高 
底层基于数组和链表
为什么从数组都从0开始?
为了性能进一步寻找的地址的速度 
比如找第4个地址,如果不从0开始。就需要从1开始到第五个然后减1
从0开始就直接乘以 4,不需要减1。


二叉树:
也叫查找树,每个节点只有两个分支


规则:小的存左边、大的存右边、一样的不存。
但二叉树也会存在问题的:当数据已经是排好序的,查询性能会下降
红黑树就是可以自动平衡的二叉树


HashSet 如何去重?
先算位置,判断是否重复
需要重写HashCode 和equals
LinkeHashSet集合的特点和原理:有序、不重复、无索引、
底层原理依然是基于哈希表(数组、链表、红黑树)实现的
但是,他的每个元素都额外的多了一个双链表的机制记录它前后的元素的位置
每个地址记上个地址和下个地址
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值