概述

对过程的重复,称为迭代。
迭代器是遍历Collection集合的通用方式.

迭代器的常用方法

  1. E next():返回迭代的下一个元亲对象<br /> boolean hasNext():如果仍有元素可以迭代,则返回true

注意

  1. 列表迭代器是List体系独有的遍历方式,可以在对集合遍历的同时进行添加、删除等操作。但是必须通过调用列表迭代器的方法来实现.

使用步骤

  1. 1.通过集合对象获取其对象的迭代器对象<br /> 2.判断迭代器中是否有元素<br /> 3.如果有就获取

总结

  1. 普通的迭代器在遍历集合的同时不能添加或删除元素,否则会报并发修改错误<br /> 列表迭代器在遍历集合的同时可以修改集合中的元素(添加、删除等),必须使用列表迭代器

案例

  1. public class IteratorDemo {
  2. public static void main(String[] args) {
  3. //需求:通过迭代器遍历List集合
  4. //1.创建集合对象
  5. List list = new ArrayList();
  6. //2.创建元素对象
  7. //3.将元素对象添加到集合对象中
  8. list.add("a");
  9. list.add("b");
  10. list.add("c");
  11. //4.遍历集合
  12. //迭代器的用法
  13. // 1.通过集合对象获取其对象的迭代器对象
  14. Iterator it = list.iterator();
  15. // 2.判断迭代器中是否有元素
  16. while (it.hasNext()){//如果迭代器中有元素就一直迭代
  17. // 3.如果有就获取
  18. String s = (String) it.next();
  19. System.out.println(s);
  20. }
  21. System.out.println("--------------");
  22. // //需求:判断集合中如果有字符串“b",就在其后添加一个新的字符串:Java
  23. // // 1.通过集合对象获取其对象的迭代器对象
  24. // Iterator it = list.iterator();
  25. // // 2.判断迭代器中是否有元素
  26. // while (it.hasNext()){//如果迭代器中有元素就一直迭代
  27. // // 3.如果有就获取
  28. // String s = (String) it.next();
  29. // if ("b".equals(s)){//这样写可以避免空指针异常
  30. // //能走到这里,说明集合中有元素b
  31. // list.add("Java");//这样写不行会报ConcurrentModificationException(并发修改异常)
  32. // }
  33. // System.out.println(s);
  34. // }
  35. // System.out.println("--------------");
  36. //需求:测试列表迭代器
  37. //需求:判断集合中如果有字符串“b",就在其后添加一个新的字符串:Java
  38. // 1.通过集合对象获取其对象的迭代器对象
  39. ListIterator lit = list.listIterator();
  40. // 2.判断迭代器中是否有元素
  41. while (lit.hasNext()){//如果迭代器中有元素就一直迭代
  42. // 3.如果有就获取
  43. String s = (String) lit.next();
  44. if ("b".equals(s)){
  45. lit.add("Java");//必须调用列表迭代器的方法实现
  46. }
  47. System.out.println(s);
  48. }
  49. System.out.println("--------------");
  50. //打印新的集合中的值
  51. System.out.println(list);
  52. }
  53. }