您现在的位置是:首页 >技术教程 >Leetcode Hot100-哈希篇-集合-Collection网站首页技术教程
Leetcode Hot100-哈希篇-集合-Collection
简介Leetcode Hot100-哈希篇-集合-Collection
Collection集合:
基本功能
增add 删remove 查contains 清空clear 集合->数组toArray
遍历方式
1.迭代器
Collection<String> a = new ArrayList<>();
a.add('hello');
a.add('World');
Iterator<String> it = a.iterator();
While(it.hasNext()){
String tt=it.next();
System.out.println(tt);
}
2.增强for循环List Set均可用
for(String one:a){}
3.Lambda表达式(简化版)
a.forEach(System.out::println)
并发业务遍历异常处理(漏删)
for循环(支持索引的List集合中可用)
解决方法:list.remove(a1)1.正序遍历在循环中做i--操作。
2.倒序遍历,起点为size-1。
迭代器
使用迭代器自身提供的remove方法 it.remove();
<!-其余两种方式无法解决 增强for底层是基于迭代器实现的>
List系列集合: 有序(按照输入顺序) 可重复 有索引
独有方法 add(指定位置加元素) remove set get
1.ArrayList底层基于数组存储
第一次添加数据时扩容 默认为10
2.LinkedList底层基于链表存储
Set系列集合
Set<String> set = new LinkedHashSet<>();
1.HashSet 无序 不重复 无索引(底层基于哈希表存储)
哈希表=数组+链表+红黑树
哈希存储过程:
哈希值:
当所占位数>默认长度*加载因子时,扩容一倍;JDK8开始,当链表长度>=64位时,自动将链表转化为红黑树。
--去重不完整--保证相同对象类属性相同的对象去重
右键->Generate->hasCode() equals()方法
2.LinkedHashSet 有序 不重复 无索引
3.TreeSet 排序 不重复 无索引 (底层基于红黑树实现的排序)
无法直接对object对象排序,实现比较方法如下:
1.对象类(实体类)实现一个comparable比较接口,重写compareTo方法,指定大小比较规则
public int comparableTo(teacher a){
if(this.getAge()>a.getAge()) return 1;
//左边小于右边 return -1 相等 return 0(age相同的信息只保留一个)
//或者直接 return this.getAge()-a.getAge(); 升序
}
2.TreeSet集合自带的comparator对象
如果是要比较对象是Double类型
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。