comparison src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/util/IterableConverter.java @ 0:44465893e8b8

first Commit
author Kazuma
date Wed, 30 Nov 2016 01:47:55 +0900
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:44465893e8b8
1 package jp.ac.u_ryukyu.ie.cr.jungle.util;
2
3 import java.util.Iterator;
4
5 public class IterableConverter<A,B> implements Iterable<A>
6 {
7 private final Iterable<B> iterable;
8 private final Converter<A,B> converter;
9
10 public IterableConverter(Iterable<B> _iterable,Converter<A,B> _converter)
11 {
12 iterable = _iterable;
13 converter = _converter;
14 }
15
16 @Override
17 public Iterator<A> iterator()
18 {
19 return new IteratorConverter<A,B>(iterable.iterator(),converter);
20 }
21
22 private static final class IteratorConverter<A,B> implements Iterator<A>
23 {
24 private final Iterator<B> iterator;
25 private final Converter<A,B> converter;
26
27 public IteratorConverter(Iterator<B> _iterator,Converter<A,B> _converter)
28 {
29 iterator = _iterator;
30 converter = _converter;
31 }
32
33 @Override
34 public boolean hasNext()
35 {
36 return iterator.hasNext();
37 }
38
39 @Override
40 public A next()
41 {
42 return converter.conv(iterator.next());
43 }
44
45 @Override
46 public void remove()
47 {
48 iterator.remove();
49 }
50 }
51
52 public static interface Converter<A,B>
53 {
54 public A conv(B _b);
55 }
56 }