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 {
}
}
};
}
};
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKY2xhc3MgRXhhbXBsZSB7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgTGlzdDxJbnRlZ2VyPiBsaXN0ID0gQXJyYXlzLmFzTGlzdCgxLCAyLCAzKTsKICAgICAgICAKICAgICAgICBtdWx0aXBseShsaXN0LCAzKS5zdHJlYW0oKQogICAgICAgIAkuZm9yRWFjaChTeXN0ZW0ub3V0OjpwcmludGxuKTsKICAgIH0KCglzdGF0aWMgPEU+IENvbGxlY3Rpb248RT4gbXVsdGlwbHkoQ29sbGVjdGlvbjxFPiBzb3VyY2UsIGludCBjb3VudCkgewoJICAgIHJldHVybiBuZXcgQWJzdHJhY3RDb2xsZWN0aW9uPEU+KCkgewoJICAgICAgICBAT3ZlcnJpZGUKCSAgICAgICAgcHVibGljIGludCBzaXplKCkgewoJICAgICAgICAgICAgcmV0dXJuIGNvdW50ICogc291cmNlLnNpemUoKTsKCSAgICAgICAgfQoJICAgICAgICBAT3ZlcnJpZGUKCSAgICAgICAgcHVibGljIEl0ZXJhdG9yPEU+IGl0ZXJhdG9yKCkgewoJICAgICAgICAgICAgcmV0dXJuIG5ldyBJdGVyYXRvcjxFPigpIHsKCSAgICAgICAgICAgICAgICBmaW5hbCBJdGVyYXRvcjxFPiBpdCA9IHNvdXJjZS5pdGVyYXRvcigpOwoJCgkgICAgICAgICAgICAgICAgRSBuZXh0OwoJICAgICAgICAgICAgICAgIGludCBpID0gMDsKCQoJICAgICAgICAgICAgICAgIEBPdmVycmlkZQoJICAgICAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIGhhc05leHQoKSB7CgkgICAgICAgICAgICAgICAgICAgIHJldHVybiBpIDwgc2l6ZSgpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBAT3ZlcnJpZGUKCSAgICAgICAgICAgICAgICBwdWJsaWMgRSBuZXh0KCkgewoJICAgICAgICAgICAgICAgICAgICBpZiAoaGFzTmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGkgJSBjb3VudCkgPT0gMCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgPSBpdC5uZXh0KCk7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICArK2k7CgkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV4dDsKCSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb1N1Y2hFbGVtZW50RXhjZXB0aW9uKCk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9OwoJICAgICAgICB9CgkgICAgfTsKCX0KfQ==