数组是可以存储多个对象,例如
- int[] score={1,2,3};
- int[] score =new int[10]
- 弊端:数组的长度不可变 内容可变
- 实际开发中需要一个能够随时改变的数组—>集合collection
- collection抽象接口 定义集合的相关操作
- |——list接口 列表 数组 特点:有序 可重复
- |--ArrayList
- |--LinkedArrayList
首先是Collection,以及它的一些方法
public static void main(String [] args) {
Collection<String> t1= new ArrayList();
((ArrayList<String>) t1).add("jack");
((ArrayList<String>) t1).add("merry");
//删除一个对象
((ArrayList<String>) t1).remove("jack");
//获取元素个数
System.out.println(t1.size());
//判断是否包含一个元素
if(t1.contains("merry")){
System.out.println("有merry");
}else{
System.out.println(",没有merry");
}
//判断是否为空
if (t1.isEmpty()){
System.out.println("是空的");
}
Collection<String> t2= new ArrayList();
((ArrayList<String>) t2).add("jack");
((ArrayList<String>) t2).add("merry");
//判断两个集合是否相同 使用equals
//清空
t1.clear();
接下来就是集合的遍历
集合的遍历
.1.使用Iterator
hasNext 判断是否有元素
next 获取下一个对象
remove 删除当前遍历过后的对象
Iterator iterator=t2.iterator();
2.for-each 增强for循环 快速循环
for (String obj:t2){ System.out.println(obj); }
list接口 extends Collection
- ArrayList-连续的内存空间 优点:访问方便 缺点:删除增加麻烦
- LinkedArrayList-内部使用链表实现 增加删除效率高 访问比较麻烦
//集合里面只能存放对象
//包装类如下
//Byte Char Integer long Float Double Boolean
//使用其方法时自动将基本数据类型包装为对应的类
ArrayList<Integer>score=new ArrayList<>();
score.add(2);
score.add(3);//在末尾添加
score.add(0,1);//在指定位置插入
//访问指定元素
score.get(1);
//修改一个元素
score.set(0,0);
System.out.println(score);
//删除
score.remove(0);//删除指定位置的元素
score.add((Integer)2);//删除指定的对象
score.clear();
//将一个集合里面的内容添加到当前集合中-addAll
//retainAll取交集
//访问某个对象在集合里面的索引
ArrayList<Integer>a4=new ArrayList<>();
a4.add(1);
a4.add(2);
a4.add(2);
a4.add(1);
System.out.println(a4.indexOf(1));//第一次出现的索引值
System.out.println(a4.lastIndexOf(1));//最后一次出现的索引值
//获取某个范围的子集合
List<Integer> integer=a4.subList(1,3);
System.out.println(integer);
Lambda表达式
例如当我们要实现显示数组里面的内容的时候,我们通常会定义两个类
代码如下
class ArrayClass{
public void test(int[] target, Show s){
for(int element: target){
s.customShow(element);
}
}
}
interface Show{
void customShow(int element);
然后在main函数里面实现就可以了
ArrayClass ac=new ArrayClass();
int[] num={1,2,3,4,5,6};
abc pc=new abc();
ac.test(num,pc);
当然这里用匿名类也可以的,如果我们用Lambda表达式就很简单,一句话就可以了,不用那么麻烦去创建类
ArrayClass ac=new ArrayClass();
int[] num={1,2,3,4,5,6};
ac.test(num,(int element)->{
System.out.println(element);
});
···