view src/main/java/jp/ac/u_ryukyu/ie/cr/bbs/local/IterableConverter.java @ 1:64a72a7a0491

add local bbs
author tatsuki
date Mon, 27 Jun 2016 04:24:25 +0900
parents
children
line wrap: on
line source

package jp.ac.u_ryukyu.ie.cr.bbs.local;

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);
	}
}