0x00 Collection集合
1.集合概述
集合是java种提供的一种容器,可以用来存储多个数据。
2.集合和数组的区别
- 数组的长度是固定的,集合的长度是可变的。
- 数组中存储的是统一类型的元素,可以存储基本数据类型值。集合存储的都是对象,而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。
3.集合使用的两个接口
list接口
- 有序的集合(存储和取出元素顺序相同)
- 允许存储重复的元素
- 有索引,可以使用普通的for循环
set接口
- 不允许存储重复元素
- 没有索引(不能使用普通的for循环)
4.Collection常用功能
java.util.Collection接口是多有单列集合的最顶层的接口,里边定义了所有单列集合共性的方法。任意的单列集合都可以使用Collection接口中的方法。
共性的方法
- public boolean add(E e):把给定的对象添加到当前集合中。
- public void clear():清空集合中所有的元素。
- public boolean remove(E e):把给定的对象在当前集合中删除。
- public boolean contains(E e):判断当前集合中是否包含给定的对象。
- public boolean isEmpty():判断当前集合是否为空。
- public int size():返回集合中元素的个数。
- public Object[] toArray():把集合当中的元素存储到数组中。
5.Iterator接口
迭代:即Collection集合元素的通用获取方式,在去元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续再判断,如果还有就再取出来。一直把集合中的所有元素全部取出。这种取出方式专业术语成为迭代。
java.util.Iterator接口:迭代器(对集合进行遍历)
有两个常用的方法
boolean hasNext() 如果仍有元素可以迭代,则返回true。
E next() 返回迭代的下一个元素,取出集合的下一个元素。
Iterator迭代器,是一个接口,我们无法直接使用,需要使用Iterator接口的实现类对象,获取实现类的方式比较特殊。
Collection接口中有一个方法,叫iterator(),这个方法就是迭代器的实现类对象。
迭代器的使用步骤【重点】
- 使用集合中的方法iterator()获取迭代器的实现对象,使用Iterator接口接受(多态)
- 使用Iterator接口中的方法hasNext判断还有没有下一个元素
- 使用Iterator接口中的方法next取出集合中的下一个元素。
6.迭代器的代码实现
package day22;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Demo01 {
public static void main(String[] args) {
//创建一个集合对象
Collection<String> coll = new ArrayList<>();
//往集合中添加元素
coll.add("盖伦");
coll.add("赵信");
coll.add("嘉文");
coll.add("萨科");
coll.add("艾希");
Iterator<String> it = coll.iterator();
//使用循环从集合中拿元素
while (it.hasNext()){
String e = it.next();
System.out.println(e);
}//
//使用Iterator接口中的方法hasNext判断还有没有下个元素
// boolean b = it.hasNext();
// System.out.println(b);
// String s = it.next();
// System.out.println(s);
// b = it.hasNext();
// System.out.println(b);// s = it.next();
// System.out.println(s);//// b = it.hasNext();
// System.out.println(b);// s = it.next();
// System.out.println(s);
// b = it.hasNext();
// System.out.println(b);
// s = it.next();
// System.out.println(s);
// b = it.hasNext();
// System.out.println(b);
// s = it.next();
// System.out.println(s);
// b = it.hasNext();
// System.out.println(b);
// s = it.next();
// System.out.println(s);
//如果没有元素的情况下还要接着拿,那么就会造成异常。
}
}
7.增强for循环
增强for循环(也成for each循环)是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。它的内部原理其实是个iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。
所有的单列集合都可以使用增强for循环,增强for循环的作用就是遍历集合和数组。
格式
for(集合/数组的数据类型 变量名:集合名/数组名){
sout(变量名);
}
练习1:使用增强for循环遍历数组和集合
package day22;
import java.util.ArrayList;
import java.util.Collection;
public class lianxi1 {
public static void main(String[] args) {
demo01();
demo02();
}
//使用增强for循环遍历数组
private static void demo01(){
int[] arr = {1,2,3,4,5,6};
for (int i:arr) {
System.out.println(i);
}
}
//使用增强for循环遍历集合
private static void demo02(){
Collection<String> coll = new ArrayList<>();
coll.add("卡萨丁");
coll.add("卡兹克");
coll.add("克格莫");
coll.add("希维尔");
for (String s:coll) {
System.out.println(s);
}
}
}