大家好,我是小材鸟,本篇博客将带你了解java集合,如果觉得本篇对你有帮助 的话,可以给博客点一个👍吗?谢谢🌹
集合和数组的区别
1.数组可以存基本数据类型集合只能存引用数据类型
2.长度可变
集合的分类
1.Collection
2.Map 这两个集合皆为接口,而其中都各有各的实现类
Collection中有常用的两种实现类(Arraylist和Hachset)
Arraylist不唯一,有序 连续式(方便查找) linkedlist 链式 (方便修改)下标为int类型
Hachset唯一,“乱”序 按照自己特定的规则排序,添加同一元素第二次添加失败
Hachmap键(key)值(values)对 其中排序规则以及其他特征与HachSet基本相同
当新添加的键与已存在的键相同时
@1新值将替换旧值
@2并且把被替换的旧值返回。
Hachmap中还有一个entry集合,其使用场景即利用entry来将键值对附加给其他集合,并有自己的方法 如:对象.getKey()来获取该对象在entry中的key 对象.getValue来获取该对象在entry中的value
集合的泛型
泛型的类型只有引用数据类型
Object是所有类的父类,泛型为Object时可以存多种数据类型不同的数据,因为Object会自动转换为相应的包装类,但不能将泛型为Object的集合存入其他泛型为引用数据的集合
遍历集合的方法:
增强foreach foreach中不能增减集合内容
it迭代器
it迭代器用于HashSet集合中,因为HashSet集合没有下标,只能用于it迭代器或其他方法进行遍历
HashMap和list集合使用ForEach简单
注意:forEach中获取HashMap的key的值时数据类型要和key的数据类型相同
Iterotar<Integer> it = ste.iterotar();
while(it.HasNExt()){
System.out.println(it.next());
}
maptoint将Intger类型数据转成int类型
重写Hashcode和eq的作用:
使用快捷键重写后实体类和实体类比较的就是内容不再是地址(必须重写Hashcode方法)不然比较完eq相等时,Hashcode不一定会相等,因为实体类重写了Object中的eq方法而没有重写Hashcode方法
Hashcode方法的作用是存储地址
Stream流,函数编程思想,只需要给其处理方式即可.00000
除map集合以外的集合都要加.Stream后再继续操作
ArrayList.Stream().。。。
HashSet.Stream().。。。
Map。。。
+
stream后可以采用lambda表达式继续
如:
ArrayList.Stream().forEach(对象名->操作)
collection集合:
add放 remove删除 contains查找 size集合长度 clear清空集合 addAll添加所有 toArray转数组
get取值 sort排序 remove删除下标 indexOf获取某个元素的下标
lambda表达式中的map方法和Map集合不同,map方法用来接受值,Map集合是用来储存数据的
set.removeIf(参数)判断删除
sort排序只有list可用,但是sort方法中必须要传参,默认排序就是null,否则传lamuda表达式
Collection接口中有一个remove方法,它的参数是(下标),返回类型是(对象)
多维集合
与多维数组思路相同,写法上只是泛型改为集合,存储的每个元素改为集合