Iterator迭代器的使用。
package Day12;/*
*@author wanghongyuan
*@Create 2020/12/19 18:48
java.util.Iterator接口:迭代器(对集合进行遍历)
有两个常用方法
boolean hasNext()判断有没有集合中有没有元素可以迭代,有则返回true
判断集合中还有没有下一个元素,有就返回true,没有就返回false
E next()返回迭代的下一个元素
取出集合中的下一个元素
Iteration迭代器,是一个接口,我们无法直接使用,需要使用Iteration接口的实现类对象,获取实现类对象的方式比较特殊
在Collection接口中有一个方法,叫iteration();这个方法返回的就是迭代器的实现类对象
Iterator<> iterator() 返回在此collection的元素进行迭代的迭代器。
迭代器的使用步骤(重点):
1.通过Collection中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态)
2.使用Iterator接口中的方法,叫hasNext判断有没有下一个元素
3.使用Iterator接口中的方法Next取出集合中的下一个元素
*/
import java.util.*;
public class Demo01Collection {
public static void main(String[] args) {
// Collection<String> coll = new ArrayList<>();
// Collection<String> coll = new HashSet<>();//无序,里面存储的元素不能重复。
// Collection<String> coll = new Vector<>();
// Collection<String> coll = new TreeSet<>();
// Collection<String> coll = new LinkedHashSet<>();
Collection<String> coll = new LinkedList<>();
coll.add("詹姆斯");
coll.add("科比");
coll.add("麦迪");
coll.add("艾弗森");
coll.add("姚明");
/*
* 1.使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态)
* 注意:
* Iterator<E> 接口也是有泛型的,迭代器的泛型跟着集合走,集合是什么泛型,迭代器就是什么泛型
*
* */
// 多态 接口 实现类对象
Iterator<String> it = coll.iterator();
/*
* 发现使用迭代器取出集合中元素的代码是一个重复的过程
* 所以我们可以使用循环优化
* 不知道集合中有多少元素,使用while循环
* 循环结束的条件,hasNext方法返回false
*
* */
while(it.hasNext()){
String e = it.next();
System.out.println(e);
}
System.out.println("============");
// 初始化表达式:获取一个迭代器 boolean表达式:判断这个迭代器是否有值;步进表达式可以为空。(原因是next这个即取出元素,也会将指针往后移动一位)
for (Iterator<String> it2 =coll.iterator();it2.hasNext(); ){
String e = it2.next();
System.out.println(e);
System.out.println("+++++++++++++++++");
}
/*
* 增强for循环
* 格式:
* for(数组或者集合的数据类型 变量名: 数组名/集合名){
* System.out.println(变量名);
*
* }
*注意事项:
* 增强for 循环只能遍历数组或者集合。不能增删改查
* */
for (String iter :coll) {
System.out.println(iter);
}
System.out.println("========================");
int[] arr = {1,2,3,4,5,6};
for (int i : arr){
System.out.println(i);
}
// String its = it.next();
// System.out.println(its);
// it.hasNext();
// String its1 = it.next();
// System.out.println(its1);
// it.hasNext();
// String its2= it.next();
// System.out.println(its2);
// it.hasNext();
// String its3 = it.next();
// System.out.println(its3);
// it.hasNext();
// String its4 = it.next();
// System.out.println(its4);
// it.hasNext();
// System.out.println(it.hasNext());// false
// String its5 = it.next();//NoSuchElementException
// System.out.println(its5);
// System.out.println(coll);
// coll.clear();
// boolean empty = coll.isEmpty();
// System.out.println(empty);
}
}