annotate src/main/java/jp/ac/u_ryukyu/ie/cr/bbs/local/bbs/IterableConverter.java @ 8:766f7668521f

commit
author tatsuki
date Thu, 02 Feb 2017 23:05:59 +0900
parents src/main/java/jp/ac/u_ryukyu/ie/cr/bbs/local/IterableConverter.java@64a72a7a0491
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8
tatsuki
parents: 1
diff changeset
1 package jp.ac.u_ryukyu.ie.cr.bbs.local.bbs;
1
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
2
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
3 import java.util.Iterator;
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
4
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
5 public class IterableConverter<A,B> implements Iterable<A>
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
6 {
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
7 private final Iterable<B> iterable;
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
8 private final Converter<A,B> converter;
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
9
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
10 public IterableConverter(Iterable<B> _iterable,Converter<A,B> _converter)
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
11 {
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
12 iterable = _iterable;
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
13 converter = _converter;
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
14 }
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
15
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
16 public Iterator<A> iterator()
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
17 {
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
18 return new IteratorConverter<A,B>(iterable.iterator(),converter);
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
19 }
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
20
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
21 private static final class IteratorConverter<A,B> implements Iterator<A>
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
22 {
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
23 private final Iterator<B> iterator;
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
24 private final Converter<A,B> converter;
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
25
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
26 public IteratorConverter(Iterator<B> _iterator,Converter<A,B> _converter)
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
27 {
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
28 iterator = _iterator;
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
29 converter = _converter;
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
30 }
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
31
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
32 public boolean hasNext()
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
33 {
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
34 return iterator.hasNext();
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
35 }
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
36
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
37 public A next()
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
38 {
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
39 return converter.conv(iterator.next());
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
40 }
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
41
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
42 public void remove()
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
43 {
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
44 iterator.remove();
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
45 }
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
46 }
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
47
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
48 public static interface Converter<A,B>
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
49 {
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
50 public A conv(B _b);
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
51 }
64a72a7a0491 add local bbs
tatsuki
parents:
diff changeset
52 }