을 변경하지 않습니다.java8 스트림은이 코드를 클래스 멤버
stream::map
뒤에 어떻게이 항목이 namesSet에 추가되지 않습니까?
Set<String> namesSet;
@Override
public boolean isValid(List<String> input) {
namesSet = new HashSet<>();
input.stream().forEach(item -> namesSet.add(item));
return namesSet.size() == input.size();
}
스트림이 뭔가를 변경하고자하는 것은 아니다. 그것들은 결과를 평가하도록 설계되었습니다. 그리고'map'은 이름에서 알 수 있듯이 값에서 다른 것으로 맵핑해야합니다. 따라서 결과를 평가하는 실제 * 터미널 작동 *이 없으면 아무 것도 일어나지 않습니다. Streams가'namesSet.addAll (input); '을보다 장황하게 말하는 방법을 제공하도록 설계 되었다면 ... 바보가 될 것입니다 ... – Holger
"fixed"코드는 여전히 쓸모없는 스트림입니다. 'namesSet = new HashSet <> (input)을 사용하면된다. namesets.size() == input.size();'를 반환합니다. Streams를 어떤 비용으로 가져오고 자한다면, 깨끗한 방법은'namesSet = input.stream(). collect (Collectors.toSet()); namesets.size() == input.size();'를 반환합니다. – Holger
또는'input.stream(). distinct(). count() == input.size()'. 중복 된 필드를 제거하십시오. –