学习Java第17天

Day17

List

新增内容: 新增了一些根据索引操作的方法

泛型: 增强程序的稳定性与可读性

强制检测数据的类型

使用: 在类型的后面添加<类型>

ArrayList

是List接口的实现类 特点:

有序 可重复

底层结构:

可变数组 优点:

根据索引查询效率高,访问速度快 缺点:

增删涉及到数组的拷贝问题等效率较低 应用场景:

大量做查询,少量做增删的情况下适合使用ArrayList存储数据 扩容:

初始容量为10,扩容机制->int newCapacity = oldCapacity + (oldCapacity >> 1); 每次扩容原容量的1.5倍,利用Arrays.copyOf实现扩容 新增方法:

void forEach(Consumer<? super E> action) 对 Iterable每个元素执行给定操作,直到处理 Iterable所有元素或操作引发异常。

Vector

特点:

有序 可重复

底层结构:

可变数组

Vector与ArrayList的区别

1).ArrayList 线程不安全 ->效率高

Vector 线程安全 ->效率低

2)ArrayList 扩容 ->1.5倍

Vector 扩容 ->2倍

 

LinkedList

特点: 有序 可重复 以节点为单位

底层结构: 双向链表 优点 : 做查询效率较低 缺点 : 做增删效率较高 应用场景 : 大量做增删少量做查询推荐使用LinkedList 新增功能 : 新增了一些可以操作链表头尾的方法

Set

无序 不可重复|去重

新增方法: Set<E> of(E... elements)返回包含任意数量元素的不可修改集。 无序: 存放的顺序与内部真实存储的顺序不一致(内部与自己存储的规则) 去重: 两个数据调用equals方法返回值true,相同需要去重,false不同可以添加

HashSet

底层结构: 哈希表 (数组+链表+红黑树) ->是由HashMap维护 优点 : 查询,增删效率较高 缺点 : 无序 应用场景: 实现不存储相同数据,查询,增删效率较高的时候建议使用HashSet 新增功能: 无新增功能 去重: 需要在存储数据的类型中重写hashcode与equals方法实现数据的去重

数据储存步骤

1.数据hashcode()得到一个int类型的返回值(n)

2.n指定一个hash算法,计算位桶索引(x)

3.找到对应位桶,如果没有节点数据,当前值作为链头

如果有节点数据使用equals()比较是否相等若不相等,存放在最后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值