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<E>(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>(){
59 public Iterator<E> iterator(){
60 Iterator<E> iterator = innerArg.iterator();
61 return new UnmodIterator<E>(iterator);
67 * Iterableに由来する削除操作不可なラップIteratorを生成する。
68 * @param <E> コレクション内の要素型
69 * @param iterable Iterable
70 * @return 変更操作不可なIterator
71 * @throws NullPointerException 引数がnull
73 public static <E> Iterator<E> unmodIterator(Iterable<E> iterable)
74 throws NullPointerException{
75 if(iterable == null) throw new NullPointerException();
76 Iterator<E> iterator = iterable.iterator();
77 return new UnmodIterator<E>(iterator);
83 * @return {@inheritDoc}
86 public boolean hasNext(){
87 return this.rawIterator.hasNext();
93 * @return {@inheritDoc}
94 * @throws NoSuchElementException これ以上要素はない。
97 public E next() throws NoSuchElementException{
98 return this.rawIterator.next();
104 * @throws UnsupportedOperationException
107 public void remove() throws UnsupportedOperationException{
108 throw new UnsupportedOperationException();