Java 스트림을 사용하는 방법을 배우고 중첩 된 콜렉션을 스트리밍하고 콜렉션으로 결과를 다시 수집하는 방법을 이해해야합니다.Java 스트림 : 중첩 된 콜렉션을 수집하십시오.
아래의 간단한 예제에서 2 개의 ArrayList를 만들고 ArrayList에 추가했습니다. 각 중첩 된 컬렉션에 대해 간단한 함수를 수행 한 다음 결과를 새 컬렉션으로 캡처 할 수 있기를 원합니다. 코드의 마지막 줄은 컴파일되지 않습니다. 모든 설명을 부탁드립니다!
ArrayList<Integer> list1 = new ArrayList<Integer>(Arrays.asList(1,2,3));
ArrayList<Integer> list2 = new ArrayList<Integer>(Arrays.asList(4,5,6));
ArrayList<ArrayList<Integer>> nested = new ArrayList<ArrayList<Integer>>();
nested.add(list1);
nested.add(list2);
ArrayList<ArrayList<Integer>> result = nested.stream()
.map(list -> list.add(100))
.collect(Collectors.toList());
정확히 무엇을 원하십니까? 당신의'nested.stream()'은'Stream>'를 반환 할 것이고 따라서 여러분은 예상대로 각 중첩리스트를 조작 할 수 있습니다. 아니면 이것을 "Stream "으로 변환하여 중첩 목록의 각 요소를 조작 할 수 있습니까? –
Collectors.toList()는 목록을 만드는 데 사용됩니다. ArrayList가 아닙니다. 구현이 아닌 인터페이스에 프로그램하십시오. 또한 반복되는 요소를 스트림으로 변경하면 안됩니다. 그것은 스트림이있는 것이 아닙니다. –
'List'의 add 메소드는 반환 값 타입이'boolean'이므로'.map (list -> list.add (100))'은'Stream'을 리턴 할 것입니다. –