view src/main/java/app/bbs/IterableConverter.java @ 112:8f9811a1e00c

Moved app files
author one
date Fri, 29 Nov 2013 04:31:22 +0900
parents src/main/java/jungle/app/bbs/IterableConverter.java@f9e29a52efd3
children
line wrap: on
line source

package app.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);
	}
}