2 * unmodifiable iterator wrap
4 * License : The MIT License
5 * Copyright(c) 2010 olyutorskii
8 package jp.sourceforge.jovsonz;
10 import java.util.Iterator;
11 import java.util.NoSuchElementException;
14 * 既存の{@link java.util.Iterator}および{@link java.lang.Iterable}に対し、
15 * 削除のできない変更操作不可なIteratorラッパを提供する。
16 * @param <E> コレクション内の要素型
18 public class UnmodIterator<E> implements Iterator<E> {
20 private final Iterator<E> rawIterator;
24 * @param iterator ラップ元Iterator
25 * @throws NullPointerException 引数がnull
27 public UnmodIterator(Iterator<E> iterator) throws NullPointerException{
29 if(iterator == null) throw new NullPointerException();
30 this.rawIterator = iterator;
35 * 削除操作不可なラップIteratorを生成する。
36 * @param <E> コレクション内の要素型
37 * @param iterator ラップ元Iterator
38 * @return 変更操作不可なIterator
39 * @throws NullPointerException 引数がnull
41 public static <E> Iterator<E> wrapUnmod(Iterator<E> iterator)
42 throws NullPointerException{
43 if(iterator == null) throw new NullPointerException();
44 return new UnmodIterator<>(iterator);
48 * 削除操作不可なラップIterableを生成する。
49 * @param <E> コレクション内の要素型
50 * @param iterable ラップ元Iterable
51 * @return 変更操作不可なIteratorを生成するIterable
52 * @throws NullPointerException 引数がnull
54 public static <E> Iterable<E> wrapUnmod(Iterable<E> iterable)
55 throws NullPointerException{
56 if(iterable == null) throw new NullPointerException();
57 final Iterable<E> innerArg = iterable;
58 return new Iterable<E>(){
60 public Iterator<E> iterator(){
61 Iterator<E> iterator = innerArg.iterator();
62 return new UnmodIterator<>(iterator);
68 * Iterableに由来する削除操作不可なラップIteratorを生成する。
69 * @param <E> コレクション内の要素型
70 * @param iterable Iterable
71 * @return 変更操作不可なIterator
72 * @throws NullPointerException 引数がnull
74 public static <E> Iterator<E> unmodIterator(Iterable<E> iterable)
75 throws NullPointerException{
76 if(iterable == null) throw new NullPointerException();
77 Iterator<E> iterator = iterable.iterator();
78 return new UnmodIterator<>(iterator);
84 * @return {@inheritDoc}
87 public boolean hasNext(){
88 return this.rawIterator.hasNext();
94 * @return {@inheritDoc}
95 * @throws NoSuchElementException これ以上要素はない。
98 public E next() throws NoSuchElementException{
99 return this.rawIterator.next();
105 * @throws UnsupportedOperationException
108 public void remove() throws UnsupportedOperationException{
109 throw new UnsupportedOperationException();