import java.util.*;

class Example {
    public static void main(String[] args) {
        List<Integer> list = Arrays.asList(1, 2, 3);
        
        multiply(list, 3).stream()
        	.forEach(System.out::println);
    }

	static <E> Collection<E> multiply(Collection<E> source, int count) {
	    return new AbstractCollection<E>() {
	        @Override
	        public int size() {
	            return count * source.size();
	        }
	        @Override
	        public Iterator<E> iterator() {
	            return new Iterator<E>() {
	                final Iterator<E> it = source.iterator();
	
	                E next;
	                int i = 0;
	
	                @Override
	                public boolean hasNext() {
	                    return i < size();
	                }
	                @Override
	                public E next() {
	                    if (hasNext()) {
	                        if ((i % count) == 0) {
	                            next = it.next();
	                        }
	                        ++i;
	                        return next;
	                    } else {
	                        throw new NoSuchElementException();
	                    }
	                }
	            };
	        }
	    };
	}
}