기존 스트림에 새로운 가치 추가
값을 값에 할 수 있는 요?Stream
내가 상상할 수 있는 건 이런 거야
public <T> Stream<T> addToStream(Stream<T> stream, T elem ) {
List<T> result = stream.collect(Collectors.toList());
result.add(elem);
return result.stream();
}
그러나 나는 장황함 없이 람다 표현에 사용할 수 있는 더 간결한 것을 찾고 있다.
PECS 원칙을 구현하려고 했을 때 또 다른 질문이 나왔습니다.
public <T> Stream<? super T> addToStream(Stream<? super T> stream, T elem ) {
List<? super T> result = stream.collect(Collectors.toList()); //error
result.add(elem);
return result.stream();
}
일드카 seems seems seems seems seems seems seems seems seems seems seems seems seems seems와 함께 사용할 수 것 .Stream.collect
부탁드립니다을 사용하다
이 질문은 스트림에 실제로 데이터가 포함되어 있다는 잘못된 가정을 뒷받침합니다.스트림은 데이터 구조가 아니라 다양한 데이터 소스에 걸쳐 벌크 작업을 지정하기 위한 수단입니다.
의 스트림을 . 예를 , 스트림을 하나로 결합하는 조합자가 있습니다.Stream.concat
Stream.of
Collections」)에서 취득합니다Collection.stream
따라서 새로운 요소를 설명하는 새로운 스트림과 함께 수중에 있는 스트림의 결합인 새로운 스트림을 생성할 경우 이러한 스트림을 조합할 수 있습니다.
에서 문제는 PECS가 세 번 입니다.? super T
않다고 가정하고 있습니다.와일드카드가 발생할 때마다 원하는 것이 아닌 고유한 캡처에 대응합니다.이 아닌이 많이 들고 되지 않을 이 있는(또한 컬렉션을 구체화하지 마십시오.이것은 비용이 많이 들고 스트림이 유한하지 않으면 중단되지 않을 수 있습니다. concat을 합니다.정답은 제네릭스를 잘못 이해한 것뿐입니다.
public<T> Stream<T> appendToStream(Stream<? extends T> stream, T element) {
return Stream.concat(stream, Stream.of(element));
}
스트림에 "삽입"할 생각을 하고 있었기 때문에 PECS와 혼동하고 있었습니다.
어때.
return Stream.concat(stream, Stream.of(elem));
이는 원래 스트림이 유한하다고 가정하는 것입니다.그렇지 않으면 반대 순서로 합칠 수 있습니다.
StreamEx 라이브러리에는 다음 항목이 있습니다.#prepend()
★★★★★★★★★★★★★★★★★」#append()
를 하다
StreamEx.of("second").prepend("first").append("third").forEach(System.out::println);
출력은 다음과 같습니다.
first
second
third
가장 좋은 방법은 다음과 같이 플랫맵을 사용하는 것입니다.
public <T> Stream<T> appendToStream(Stream<T> stream, T element) {
return stream.flatMap(e -> Stream.of(e, element));
}
이것은 원래 스트림에서 동작하기 때문에 스트림에서의 다른 중간 동작일 수 있습니다.다음은 예를 제시하겠습니다.
stream.flatMap(e -> Stream.of(e, element))
.map(...)
.filter(...)
.collect(Collectors.toList());
언급URL : https://stackoverflow.com/questions/28785833/adding-new-value-to-existing-stream
'programing' 카테고리의 다른 글
문자열 "Jun 1 2005 1:33"을 변환합니다.PM"에서 날짜/시간으로 (0) | 2022.10.26 |
---|---|
Python에서는 어떻게 무한한 수를 표현할 수 있을까요? (0) | 2022.10.26 |
JavaScript에서 문자열에 다른 하위 문자열이 포함되어 있는지 확인하는 가장 빠른 방법은 무엇입니까? (0) | 2022.10.26 |
panda Data Frame: nan 값을 평균 컬럼으로 대체 (0) | 2022.10.26 |
8자의 UUID 가져오기 (0) | 2022.10.26 |