更多: zhilu jiaocheng
Java迭代器示例
迭代ArrayList 示例
迭代 ArrayList 元素的 Java 示例。
ArrayList<String> list = new ArrayList<>(); list.add("A"); list.add("B"); list.add("C"); list.add("D"); System.out.println(list); //Get iterator Iterator<String> iterator = list.iterator(); //Iterate over all elements while(iterator.hasNext()) { //Get current element String value = iterator.next(); System.out.println( value ); //Remove element if(value.equals("B")) { iterator.remove(); } } System.out.println(list);
输出:
[A, B, C, D] A B C D [A, C, D]
迭代HashSet 示例
遍历 HashSet 与遍历列表非常相似。
HashSet<String> hashSet = new HashSet<>(); hashSet.add("A"); hashSet.add("B"); hashSet.add("C"); hashSet.add("D"); System.out.println(hashSet); //Get iterator Iterator<String> iterator = hashSet.iterator(); //Iterate over all elements while(iterator.hasNext()) { //Get current element String value = iterator.next(); System.out.println( value ); //Remove element if(value.equals("B")) { iterator.remove(); } } System.out.println(list);
输出:
[A, B, C, D] A B C D [A, C, D]
迭代HashMap 键示例
HashMap<Integer, String> map = new HashMap<>(); map.put(1, "A"); map.put(2, "B"); map.put(3, "C"); map.put(4, "D"); System.out.println(map); //Get iterator Iterator<String> iterator = map.keys().iterator(); //Iterate over all keys while(iterator.hasNext()) { String key = iterator.next(); System.out.println( "Key : " + key + ", Value : " + map.get(key) ); }
输出:
{1=A, 2=B, 3=C, 4=D} Key : 1, Value : A Key : 2, Value : B Key : 3, Value : C Key : 4, Value : D
HashMap 值迭代器示例
HashMap<Integer, String> map = new HashMap<>(); map.put(1, "A"); map.put(2, "B"); map.put(3, "C"); map.put(4, "D"); System.out.println(map); //Get iterator Iterator<String> iterator = map.values().iterator(); //Iterate over all values while(iterator.hasNext()) { System.out.println( "Value : " + iterator.next() ); }
输出:
{1=A, 2=B, 3=C, 4=D} Value : A Value : B Value : C Value : D
迭代器 forEachRemaining() 示例
迭代 ArrayList 元素并对它们执行操作的 Java 示例。
ArrayList<String> list = new ArrayList<>(); list.add("A"); list.add("B"); list.add("C"); list.add("D"); list.iterator().forEachRemaining( System.out::println );
输出:
A B C D
Java Iterator 接口用于迭代集合(列表、集合或者映射)中的元素。
Java 迭代器的方法
hasNext()
- 如果迭代中有更多元素保留在集合中,则此方法返回“true”。
- 如果迭代器遍历了所有元素,则此方法将返回
false
。
next()
- 此方法返回迭代中的下一个元素。
- 如果迭代没有更多元素,它会抛出 NoSuchElementException。
remove()
- 它从底层集合中移除迭代器返回的最后一个元素(可选操作)。
- 每次调用 next() 只能调用一次此方法。
- 如果在迭代过程中以任何方式修改了底层集合,而不是通过调用
remove()
方法,迭代器将抛出 ConcurrentModificationException 。 - 这样做的迭代器被称为快速失败迭代器,因为它们快速而干净地失败,而不是冒着在未来不确定的时间出现任意、非确定性行为的风险。
forEachRemaining()
- 此方法对每个剩余元素执行给定的操作,直到处理完所有元素或者操作引发异常。
- 如果指定了该顺序,则操作按迭代顺序执行。
- 如果指定的操作为空,则抛出 NullPointerException。
Java迭代器接口
所有 Java 集合类都提供 iterator() 方法,该方法返回 Iterator 的实例以遍历该集合中的元素。
例如,arraylist 类的 iterator() 方法以适当的顺序在此列表中的元素上返回一个迭代器。
ArrayList<String> list = new ArrayList<>(); list.add("A"); list.add("B"); list.add("C"); list.add("D"); Iterator<String> iterator = list.iterator(); while(iterator.hasNext()) { System.out.println( iterator.next() ); }
输出:
A B C D
Java 将迭代器转换为流
首先将迭代器转换为“Spliterator”,然后使用“StreamSupport”从 Spliterator 获取流,从而将迭代器转换为流。
import java.util.Arrays; import java.util.Iterator; import java.util.Spliterator; import java.util.Spliterators; import java.util.stream.Stream; import java.util.stream.StreamSupport; public class IteratorToStream { public static void main(String[] args) { // Iterator Iterator<String> iterator = Arrays.asList("a", "b", "c") .listIterator(); //Extra step to get Spliterator Spliterator<String> splitItr = Spliterators .spliteratorUnknownSize(iterator, Spliterator.ORDERED); // Iterator -> Stream Stream<String> stream = StreamSupport.stream(splitItr, false); // Apply stream operations stream.forEach(System.out::println); } }
程序输出:
a b c
日期:2020-09-17 00:09:47 来源:oir作者:oir