item 47) 반환 타입으로는 스트림보다 컬렉션이 낫다
스트림보다는 컬렉션을 반환
스트림으로 반환해야 하는 경우
public class SubLists {
public static <E> Stream<List<E>> of(List<E> list) {
return Stream.concat(Stream.of(Collections.emptyList()),
prefixes(list).flatMap(Item47::suffixes));
}
public static <E> Stream<List<E>> prefixes(List<E> list) {
return IntStream.rangeClosed(1, list.size())
.mapToObj(end -> list.subList(0, end));
}
public static <E> Stream<List<E>> suffixes(List<E> list) {
return IntStream.rangeClosed(0, list.size()-1)
.mapToObj(start -> list.subList(start, list.size()));
}
public static void main(String[] args) {
SubLists.of(List.of("a", "b", "c")).forEach(System.out::println);
}
}Last updated