OneShotCollection.java

package eu.javaexperience.collection;

import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;

import eu.javaexperience.collection.iterator.OneShotIterator;

public class OneShotCollection<E> implements Collection<E>
{
	protected final E element;
	
	public OneShotCollection(E element)
	{
		this.element = element;
	}
	
	@Override
	public int size()
	{
		return 1;
	}

	@Override
	public boolean isEmpty()
	{
		return false;
	}

	@Override
	public boolean contains(Object o)
	{
		return false;
	}

	@Override
	public Iterator<E> iterator()
	{
		return new OneShotIterator<E>(element);
	}

	@Override
	public Object[] toArray()
	{
		return new Object[]{element};
	}

	@Override
	public <T> T[] toArray(T[] a)
	{
		T[] ret = Arrays.copyOf(a, 1);
		ret[0] = (T)element;
		return ret;
	}

	@Override
	public boolean add(E e)
	{
		return false;
	}

	@Override
	public boolean remove(Object o)
	{
		return false;
	}

	@Override
	public boolean containsAll(Collection<?> c)
	{
		if(c.size() > 1)
			return false;
		
		for(Object o:c)
		{
			if(o == element)
				return true;
			
			if(o != null)
				return o.equals(element);
			
		}
		
		return true;
	}

	@Override
	public boolean addAll(Collection<? extends E> c)
	{
		return false;
	}

	@Override
	public boolean removeAll(Collection<?> c)
	{
		return false;
	}

	@Override
	public boolean retainAll(Collection<?> c)
	{
		return false;
	}

	@Override
	public void clear()
	{
		throw new UnsupportedOperationException();
	}
}