java 迭代器使用
原文链接:https://blog.csdn.net/ACE_kk/article/details/126182500
一、前言
在迭代器(Iterator)没有出现之前,如果要遍历数组和集合,需要使用方法。
数组遍历,代码如下:
String[] arr = new String[]{"Java", "Java虚拟机", "Java中文社群"}; for (int i = 0; i < arr.length; i++) { String item = arr[i]; }
集合遍历,代码如下:
List<String> list = new ArrayList<String>() {{ add("Java"); add("Java虚拟机"); add("Java中文社群"); }}; for (int i = 0; i < list.size(); i++) { String item = list.get(i); }
而迭代器的产生,就是为不同类型的容器遍历,提供标准统一的方法。
迭代器遍历,代码如下:
Iterator iterator = list.iterator(); while (iterator.hasNext()) { Object object = iterator.next(); // do something }
总结:使用了迭代器就可以不用关注容器的内部细节,用同样的方式遍历不同类型的容器。
二、迭代器介绍
迭代器是用来遍历容器内所有元素对象的,也是一种常见的设计模式。
迭代器包含以下四个方法:
hasNext() :boolean —— 容器内是否还有可以访问的元素。 next() :E —— 返回下一个元素。 remove() :void —— 删除当前元素。 forEachRemaining(Consumer) :void —— JDK 8 中添加的,提供一个 lambda 表达式遍历容器元素。
迭代器使用如下:
List<String> list = new ArrayList<String>() {{ add("Java"); add("Java虚拟机"); add("Java中文社群"); }}; Iterator iterator = list.iterator(); // 遍历 while (iterator.hasNext()){ String str = (String) iterator.next(); if (str.equals("Java中文社群")){ iterator.remove(); } } System.out.println(list); // [Java, Java虚拟机] forEachRemaining 使用如下: List<String> list = new ArrayList<String>() {{ add("Java"); add("Java虚拟机"); add("Java中文社群"); }}; // forEachRemaining 使用 list.iterator().forEachRemaining(item -> System.out.println(item));