Java日志第31天 2020.8.5
Iterator迭代器
java.util.Interator接口是一个迭代器,可以对集合进行遍历。
有两个常用的方法:
1. boolean hasNext() 如果仍有元素可以迭代,则返回true。
判断集合中还有没有下一个元素,有就返回true,没有就返回false。
2. E next() 返回迭代的下一个元素
取出集合中的下一个元素
Interator迭代器,是一个接口,我们无法直接使用。需要使用Iterator接口的实现类对象,获取实现类的方式比较特殊:
Collection接口中有一个方法,叫iterator(),这个方法返回的就是迭代器的实现类对象
Iterator<E> iterator() 返回在此collection的元素上进行迭代的迭代器
迭代器使用步骤
1.使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态)
2.使用Iterator接口中的方法hasNext判断还有没有下一个元素
3.使用Iterator接口中的方法next取出集合中的下一个元素
实例:
import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class Demo01Iterator { public static void main(String[] args) { Collection<String> coll = new ArrayList<>(); coll.add("迪丽热巴"); coll.add("古力娜扎"); coll.add("马尔扎哈"); coll.add("撒扬娜拉"); Iterator<String> it = coll.iterator(); boolean b1 = it.hasNext(); System.out.println(b1); String n1 = it.next(); System.out.println(n1); boolean b2 = it.hasNext(); System.out.println(b2); String n2 = it.next(); System.out.println(n2); boolean b3 = it.hasNext(); System.out.println(b3); String n3 = it.next(); System.out.println(n3); boolean b4 = it.hasNext(); System.out.println(b4); String n4 = it.next(); System.out.println(n4); boolean b5 = it.hasNext();//false System.out.println(b5); } }
有上述实例可看出,有很多重复代码,我们可以通过循环来优化程序。
import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class Demo01Iterator { public static void main(String[] args) { Collection<String> coll = new ArrayList<>(); coll.add("迪丽热巴"); coll.add("古力娜扎"); coll.add("马尔扎哈"); coll.add("撒扬娜拉"); Iterator<String> it = coll.iterator(); /* 不知道循环次数 可以考虑使用for循环 */ while(it.hasNext()){ System.out.println(it.next()); } System.out.println("==================="); /* for循环 */ for(Iterator<String> it2 = coll.iterator(); it2.hasNext();){ System.out.println(it2.next()); } } }
增强for循环
增强for循环(也称for each循环),专门用来遍历数组和集合的。它的内部原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。
格式:
for(集合/数组的数据类型 变量名 : 结合名/数组名){
System.out.println(变量名);
}
import java.util.ArrayList; public class Demo01Foreach { public static void main(String[] args) { demo01(); System.out.println("========="); demo02(); } //数组遍历 private static void demo01() { int[] arr = {1, 2, 3, 4, 5}; for(int a : arr){ System.out.println(a); } } //集合遍历 private static void demo02(){ ArrayList<String> list = new ArrayList<>(); list.add("迪丽热巴"); list.add("古力娜扎"); list.add("马尔扎哈"); for(String l : list){ System.out.println(l); } } }