diff src/jungle/test/bbs/IterableConverter.java @ 38:d8ee57a1c2c6

add pom.xml and bbs
author one
date Mon, 08 Jul 2013 20:25:58 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jungle/test/bbs/IterableConverter.java	Mon Jul 08 20:25:58 2013 +0900
@@ -0,0 +1,52 @@
+package jungle.test.bbs;
+
+import java.util.Iterator;
+
+public class IterableConverter<A,B> implements Iterable<A>
+{
+	private final Iterable<B> iterable;
+	private final Converter<A,B> converter;
+	
+	public IterableConverter(Iterable<B> _iterable,Converter<A,B> _converter)
+	{
+		iterable = _iterable;
+		converter = _converter;
+	}
+	
+	public Iterator<A> iterator()
+	{
+		return new IteratorConverter<A,B>(iterable.iterator(),converter);
+	}
+	
+	private static final class IteratorConverter<A,B> implements Iterator<A>
+	{
+		private final Iterator<B> iterator;
+		private final Converter<A,B> converter;
+		
+		public IteratorConverter(Iterator<B> _iterator,Converter<A,B> _converter)
+		{
+			iterator = _iterator;
+			converter = _converter;
+		}
+		
+		public boolean hasNext()
+		{
+			return iterator.hasNext();
+		}
+
+		public A next()
+		{
+			return converter.conv(iterator.next());
+		}
+
+		public void remove()
+		{
+			iterator.remove();
+		}
+	}
+
+	public static interface Converter<A,B>
+	{
+		public A conv(B _b);
+	}
+}