Iterator 및 split iterator 인터페이스는 컬렉션을 반복하는 데 사용됩니다.
병렬화를 달성하기 위해 분할 반복자가 Java 8에 도입되었습니다. 주어진 요소 집합을 분할할 수 있고 다른 독립 스레드를 사용하여 병렬로 작업을 수행할 수 있습니다. 요소를 순차적으로 뿐만 아니라 병렬로 탐색할 수 있습니다. splitIterator 인터페이스에는 다음과 같은 중요한 메소드가 있습니다 -
- trySplit - 주어진 요소 집합을 여러 조각으로 분할하는 데 사용됩니다.
- tryAdvance - Iterator 인터페이스에서 사용 가능한 hasNext/next 메소드와 동일합니다.
- getExactSizeIfKnown <> - 주어진 요소 집합의 크기를 가져오는 데 사용됩니다.
| Sr. 아니요. | 키 | 반복자 | 분할 반복자 |
|---|---|---|---|
| 1 | 기본 | 컬렉션의 요소를 탐색하는 데 사용할 수 있습니다. | Stream에서도 사용할 수 있습니다. |
| 2 | 대량 작업 | 요소를 하나씩만 순회하는 데 사용할 수 있습니다. | 요소를 대량으로 탐색하는 데 사용할 수 있습니다. |
| 3 | 순차/병렬 | 순차적 방식으로만 요소를 순회할 수 있습니다. | 순차 및 병렬 방식으로 요소를 순회할 수 있습니다. |
| 4. | 외부/내부 반복자 | Iterator는 외부 반복을 사용하여 컬렉션을 반복합니다. | Splitator는 내부 반복을 사용합니다. |
분할기의 예
public class Main {
public static void main(String args[]) {
List<Integer> listOfInteger = new ArrayList<>();
listOfInteger.add(78);
listOfInteger.add(10);
listOfInteger.add(20);
listOfInteger.add(30);
Spliterator<Integer> s = listOfInteger.spliterator();
Spliterator<Integer> s1 = s.trySplit();
s.forEachRemaining(System.out::println);
System.out.println("Traverse Second Half ");
s1.forEachRemaining(System.out::println);
}
}