目的:
掌握Collection集合的定义和使用方法
相关技术、及其使用
1、Collection集合的作用:可以定义一个随时改变的数组
2、定义Collection集合的相关操作:
Collection 抽象接口 定义集合的相关操作
|-- List 列表 数组 接口 特点 :有序 可以重复
|--ArrayList
|-- LinkedArrayList
|-- Set "集合" 特点 : 无序 不重复
|---HashSet
3、改变集合中的元素方法:
增加一个对象 :add 在指定位置添加 add(i,o)
//添加一个对象
t1.add("jack");
t1.add("Merry");
System.out.println(t1);
score.add(3);//在末尾添加
score.add(0, 1);//在指定位置插入
删除一个对象 : remove 移除指定位置的对象 remove(i,o)
t1.remove("jack");
score.remove(0);//删除指定位置的元素
score.remove((Integer) 2);//删除指定的对象
获取元素个数 :size
System.out.println(t1.size());
删除所有元素 ,清空 : clear
t1.clear();
判断某个集合中是否含有某个元素 :contains
//判断是否包含一个元素
if (t1.contains("Merry")) {
System.out.println("有Meryy");
} else {
System.out.println("没有Meryy");
}
判断某个集合是否为空 : isEmpty
//判断是否为空
if (t1.isEmpty()) {
System.out.println("是空的");
}
判断两个集合是否相同(比较两个集合里面地内容) : equals
if (t1.equals(t2)) {
System.out.println("两个集合相同");
} else {
System.out.println("两个集合不相同");
}
取两个集合的交集:retainAll
ArrayList<Integer> a3 = new ArrayList<>();
a3.add(1);
a3.add(2);
score.retainAll(a3);//取两个集合的交集
System.out.println(a3);
访问某个对象在某个位置的索引 :indexOf访问初始位置 lastIndexOf访问最后一次出现的位置
ArrayList<Integer> a4 = new ArrayList<>();
a4.add(1);
a4.add(2);
a4.add(2);
a4.add(1);
System.out.println(score.indexOf(1));//如果所访问的元素有多个相同值访问第一次出现的位置
System.out.println(score.lastIndexOf(1));//最后一次出现的位置
获取某个范围里面的对象 subList(i,o)
List<Integer> integers = a4.subList(1, 2);
System.out.println(integers);
修改某个位置的值: set(i,0)
//修改一个元素set set(地址,值)
score.set(0, 0);
System.out.println(score);
注:集合里面只能存放对象
4、集合的遍历:
(1)使用使用Iterator来遍历
hasNext 判断是否有元素
next 获取下一个对象
remove 删除当前遍历后的对象
(2)for -each (增强for循环) 快速循环
(3)for- i循环
ArrayList (连续的内存空间 )
优点:
访问方便 通过get ()方法就能访问
缺点:
元素的删除和添加效率低
LinkedList内部使用链表链接 不一定连续(基本不连续)
优点:增减删除效率高 缺点:访问
5、基本数据类型对应的包装类
byte char int long float double boolean
Byte Char Integer Long Float Double Boolean
ArrayList里面自动将基本数据类型包装为对应的类
6、将ArrayList转变为普通数组 toArray
7、lambda函数
//1、使用方式 定义一个类实现接口
ArrayClass ac = new ArrayClass();
int [] num = {1,2,3,4,5,6};
PXDClass pc = new PXDClass();
ac.test(num,pc);
//2、使用匿名类
ArrayClass ac = new ArrayClass();
int [] num = {1,2,3,4,5,6};
ac.test(num, new Show() {
@Override
public void customShow(int element) {
System.out.println(element);
}
});
//3、使用Lambda
//如果参数是一个接口列对象 且接口里面只有一个方法
//可以省略方法名
ArrayClass ac = new ArrayClass();
int [] num = {1,2,3,4,5,6};
ac.test(num,(int element) ->{
System.out.println(element);
});
//4、如果只有一个参数 参数类型可以省略
ArrayClass ac = new ArrayClass();
int [] num = {1,2,3,4,5,6};
ac.test(num,element -> {
System.out.println(element);
});
//5、 如果代码块里面只有一行语句 大括号可以省略
ArrayClass ac = new ArrayClass();
int [] num = {1,2,3,4,5,6};
ac.test(num,element -> System.out.println(element));
8、自己写一个比较器:
class PXDCompare implements Comparator {
// 什么时候需要手动创建比较器
//如果系统默认提供的方法不能完成我们的比较
//1、参与比较的对象必须要
@Override
public int compare(Object o, Object t1) {
int mo = (int)o;
int mt1 = (int)t1;
return mo-mt1;
}
}
PS
今天所讲的Collection集合的使用比较简单,但是,还是对lambda 有点不是太了解。感觉今天讲的知识点虽然很枯燥,但是有必须要掌握。
网友评论