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ラッパを提供する。
17 * @param <E> コレクション内の要素型
19 public class UnmodIterator<E> implements Iterator<E> {
21 private final Iterator<E> rawIterator;
26 * @param iterator ラップ元Iterator
27 * @throws NullPointerException 引数がnull
29 public UnmodIterator(Iterator<E> iterator) throws NullPointerException{
31 if(iterator == null) throw new NullPointerException();
32 this.rawIterator = iterator;
37 * 削除操作不可なラップIteratorを生成する。
39 * @param <E> コレクション内の要素型
40 * @param iterator ラップ元Iterator
41 * @return 変更操作不可なIterator
42 * @throws NullPointerException 引数がnull
44 public static <E> Iterator<E> wrapUnmod(Iterator<E> iterator)
45 throws NullPointerException{
46 if(iterator == null) throw new NullPointerException();
47 return new UnmodIterator<>(iterator);
51 * 削除操作不可なラップIterableを生成する。
53 * @param <E> コレクション内の要素型
54 * @param iterable ラップ元Iterable
55 * @return 変更操作不可なIteratorを生成するIterable
56 * @throws NullPointerException 引数がnull
58 public static <E> Iterable<E> wrapUnmod(Iterable<E> iterable)
59 throws NullPointerException{
60 if(iterable == null) throw new NullPointerException();
61 final Iterable<E> innerArg = iterable;
62 return new Iterable<E>(){
64 public Iterator<E> iterator(){
65 Iterator<E> iterator = innerArg.iterator();
66 return new UnmodIterator<>(iterator);
72 * Iterableに由来する削除操作不可なラップIteratorを生成する。
74 * @param <E> コレクション内の要素型
75 * @param iterable Iterable
76 * @return 変更操作不可なIterator
77 * @throws NullPointerException 引数がnull
79 public static <E> Iterator<E> unmodIterator(Iterable<E> iterable)
80 throws NullPointerException{
81 if(iterable == null) throw new NullPointerException();
82 Iterator<E> iterator = iterable.iterator();
83 return new UnmodIterator<>(iterator);
89 * <p>反復子に次の要素があるか判定する。
91 * @return {@inheritDoc}
94 public boolean hasNext(){
95 return this.rawIterator.hasNext();
103 * @return {@inheritDoc}
104 * @throws NoSuchElementException これ以上要素はない。
107 public E next() throws NoSuchElementException{
108 return this.rawIterator.next();
116 * @throws UnsupportedOperationException {@inheritDoc}
119 public void remove() throws UnsupportedOperationException{
120 throw new UnsupportedOperationException();