Collection(单列集合)
概述:
是一个单列集合的顶层接口,定义了单列集合都拥有的共性功能,他的功能自己不能使用,必须要通过实现类来使用,学习共性功能,通过实现类ArrayList来使用功能其实就是对集合存放的数据进行操作的行为。
常用方法:
1、add(E e):
添加元素到调用集合对象中 (放进集合中的元素会自动装箱)
2、remove(Object o):
删除调用集合对象中的指定元素
3、clear():
清除调用集合对象中的所有元素 (只清空数据,集合还存在,只不过集合为空)
4、contains(Object o):
判断调用集合对象中是否包含指定的元素
5、size():
获取调用集合对象当前状态下的内容个数(长度)
6、isEmpty():
判断调用集合对象当前状态下是否为空
代码示例:
import java.util.ArrayList;
import java.util.Collection;
public class CollectionDemo {
public static void main(String[] args) {
//创建Collection集合对象
Collection list = new ArrayList();
//添加元素到集合中
list.add("我爱学习");
list.add("Java");
list.add("程序猿");
System.out.println(list); //[我爱学习, Java, 程序猿]
//删除调用集合对象中的指定元素
list.remove("程序猿");
System.out.println(list); //[我爱学习, Java]
//判断调用集合对象中是否包含指定的元素
boolean boo = list.contains("我爱学习");
System.out.println(boo); //true
//获取调用集合对象当前状态下的内容个数
int size = list.size();
System.out.println(size); //2
//判断调用集合对象当前状态下是否为空
boolean boo2 = list.isEmpty();
System.out.println(boo2); //false
//清除调用集合对象中的所有元素
list.clear();
System.out.println(list); //[]
}
}
方法名带有all的方法
【操作集合中的数据到另一个集合】
1、addAll(Collection<? extends E> c):
添加指定集合中的元素到调用集合对象中
2、removeAll(Collection<? extends E> c):
把指定集合的元素从调用集合中删除(删除与指定集合中相同的元素,谁调用删除谁)
3、containsAll(Collection<? extends E> c) :
判断调用集合中是否包含指定集合中的元素
4、retainAll(Collection<? extends E> c):
【是removeAll方法的取反】把指定集合的元素从调用集合中保留,其他元素删除(保留两集合中的相同的元素)
代码示例:
import java.util.ArrayList;
import java.util.Collection;
public class CollectionAllMethodDemo {
public static void main(String[] args) {
//定义集合对象
Collection list1 = new ArrayList();
//想集合list1中添加元素
list1.add("张三");
list1.add("李四");
list1.add("王五");
list1.add("赵六");
list1.add("老七");
//打印两个集合进行查看
System.out.println(list1); //[张三, 李四, 王五, 赵六, 老七]
//添加指定集合中的元素到调用集合对象中
Collection list2 = new ArrayList();
System.out.println(list2); //[]
list2.addAll(list1);
System.out.println(list2); //[张三, 李四, 王五, 赵六, 老七]
//把指定集合的元素从调用集合中删除
Collection list3 = new ArrayList();
list3.add("张三");
list3.add("李四");
list3.add("王五");
list3.add("赵六");
list3.add("老七");
list3.add("老八");
list3.add("老九");
System.out.println(list3); //[张三, 李四, 王五, 赵六, 老七, 老八, 老九]
list3.removeAll(list1);//删除相同的,留下不同的
System.out.println(list3); //[老八, 老九]
//判断调用集合中是否包含指定集合中的元素
boolean boo = list3.containsAll(list1);
System.out.println(boo); //false (因为在上一步removeAll()方法中,相同的已经被删除)
//把指定集合的元素从调用集合中保留,其他元素删除
Collection list4 = new ArrayList();
list4.add("张三");
list4.add("李四");
list4.add("王五");
list4.add("赵六");
list4.add("老七");
list4.add("老八");
list4.add("老九");
System.out.println(list4); //[张三, 李四, 王五, 赵六, 老七, 老八, 老九]
list4.retainAll(list1); //留下相同的,删除不同的
System.out.println(list4); //[张三, 李四, 王五, 赵六, 老七]
}
}
Collection的遍历
概念:
把重复操作集合中元素的过程就叫做集合遍历
1、数组法
Collection集合不能直接使用循环遍历,想办法把集合变为数组,遍历数组拿到数据达到遍历集合的效果
集合如何变为数组?
toArray()
Collection提供了一个方法可以完成这个需求,这个方法:
toArray() 返回一个Object数组
遍历集合:
1、调用toArray方法把集合变为数组
2、遍历数组 获取数据进行操作【完成了集合的遍历】
代码示例:
import java.util.ArrayList;
import java.util.Collection;
public class CollectioLoopDemo {
public static void main(String[] args) {
//创建集合对象
Collection list = new ArrayList();
//添加集合元素
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
list.add("老七");
//遍历集合
//将集合转换为Object类型的数组
Object[] array = list.toArray();
//遍历数组(完成遍历集合)
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " "); //张三 李四 王五 赵六 老七
}
}
}
2、迭代器【重点】
迭代器:
他是java中专门用来遍历容器的接口,他提供了相关的功能来对 容器的数据进行判断和获取,功能借助于循环语句【while】完成重复的获取容器中的数据,从而达到遍历的效果。
为什么需要迭代器(Iterator)?
迭代器是遍历Collection(单列集合)集合的通用方式,可以在对集合遍历的同时进行增加、删除(必须通过调用列表迭代器的方法来实现增加、删除)
常用的迭代器:Iterator ListIterator
迭代器的功能:
1、hasNext():
判断下一个位置是否有元素
2、next():
获取位置上的元素,同时把迭代器的指针移动下一个位置
方法每次只能判断一个位置和获取一个位置的元素,想要重复的获取集合的数据需要重复的调用这两个方法,结合与while循环,hasNext方法作为循环条件,next作为循环体的一部分获取集合的数据。
遍历集合:
1、集合要获取迭代器对象
【Collection提供了获取方法:iterator()】
2、通过while循环调用迭代器的方法进行获取数据进行操作
代码示例:
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class CollectioLoopDemo2 {
public static void main(String[] args) {
//创建集合对象
Collection list = new ArrayList();
// 添加集合元素
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
list.add("老七");
//获取迭代器对象
Iterator iterator = list.iterator();
//集合while循环进行遍历
while (iterator.hasNext()) {
//获取集合对应位置的数据
Object str = iterator.next();
//输出
System.out.print(str + " "); //张三 李四 王五 赵六 老七
}
}
}
迭代器遍历的原理:
图示:
文字描述:
集合的对象通过iterator方法获取迭代器对象同时迭代器的对象到集合头部位置前,指针指向下一个位置【第一个元素位置】,启动while循环执行hasNext方法判断位置是否有值,根据结果执行next方法,通过next方法获取对应位置的元素同时移动指针到下一个位置,重复这个过程一直到hasNext方法的结果为false结束循环,遍历结束
注意事项:
1、hasNext方法执行了集合对象.size() +1 次,比集合的长度大1
2、next方法执行的次数就是集合的元素个数,移动迭代器指针
3、next方法可以单独使用,有风险所以一般结合hasNext方法使用
还没有评论,来说两句吧...