java-集合框架3-迭代器的使用
package cn.burce.iterator; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; /* * 集合中的迭代器 获取集合中的元素 * 接口Iterator:两个抽象方法 * Boolean hasNext()判断集合中还有没有可以取出的元素,如果有返还True * next()取出集合的下一个元素 * Iterator接口,需要实现类 * Collection接口定义方法Iterator Iterator() * ArrayList 重写Iterator(),返回了Iterator接口实现类的对象 * 使用ArrayList集合的对象 * Iterator it = array.iterator(),运行结果就是Iterator接口实现类的对象 * it是接口的实现类对象,调用方法hasNext()和next()集合元素迭代 */ public class IteratorLearn { public static void main(String[] args) { Collection<String> c = new ArrayList<String>(); c.add("小明"); c.add("小军"); c.add("小和"); c.add("小啊"); c.add("123"); // 迭代器对集合ArrayList中的元素取出 // 调用集合的方法iterator()获取出,Iterator接口的是实现类对象 Iterator<String> it = c.iterator(); // 接口实现类对象,调用方法hasNext()判断集合中是否有元素 // 并用next()取出元素 while (it.hasNext()) { System.out.println(it.next()); } System.out.println("--------------------------"); for (Iterator<String> it1 = c.iterator(); it1.hasNext();) { System.out.println(it1.next()); } System.out.println("-----------------------------"); // 集合可以存储任何类型的对象 // 集合中不指定数据类型,那就表示什么都可以存储 Collection c1 = new ArrayList(); c1.add("我"); c1.add("wwwwww"); // 迭代器获取 Iterator it2 = c1.iterator(); while (it2.hasNext()) { System.out.println(it2.next());// 打印的这个是Object类型 String s = (String) it2.next();// 取长度需要向下转型 System.out.println(s.length());// 尽量加数据类型 } } }
package cn.burce.List; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ListDemo1 { /* * 迭代器的并发异常 java.util.ConcurrentModificationException * 不能修改集合长度 */ public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("abc1"); list.add("abc2"); list.add("abc3"); list.add("abc4"); // 使用迭代器遍历,获取时候判断集合中是否有abc3,有就添加ABC3 Iterator<String> it = list.iterator(); while (it.hasNext()) { String s = it.next(); if (s.equals("abc3")) { list.add("ABC3"); } System.out.println(s); } } }