반응형
Lambda를 사용하는 Java 8 필터 어레이
나는 a가 double[]
있고 for
루프 를 추가하지 않고 한 줄에서 음수 값을 필터링하지 않고 새 배열을 만들고 싶습니다 . Java 8 람다 식을 사용하여 가능합니까?
파이썬에서는 생성기를 사용하면 다음과 같습니다.
[i for i in x if i > 0]
Java 8에서 비슷하게 간결한 작업을 수행 할 수 있습니까?
예, DoubleStream
배열에서 생성 하고 음수를 필터링 한 다음 스트림을 다시 배열로 변환하여이를 수행 할 수 있습니다. 다음은 그 예입니다.
double[] d = {8, 7, -6, 5, -4};
d = Arrays.stream(d).filter(x -> x > 0).toArray();
//d => [8, 7, 5]
그렇지 않은 참조 배열을 필터링 하려면 결과로 원래 유형의 배열을 가져 오기 위해 Object[]
를 사용하는 toArray
메소드 를 사용해야합니다 IntFunction
.
String[] a = { "s", "", "1", "", "" };
a = Arrays.stream(a).filter(s -> !s.isEmpty()).toArray(String[]::new);
더 간단합니다 String[]
.
내장에 사용되는 필터 filter(StringUtils::isNotEmpty)
의org.apache.commons.lang3
import org.apache.commons.lang3.StringUtils;
String test = "a\nb\n\nc\n";
String[] lines = test.split("\\n", -1);
String[] result = Arrays.stream(lines).filter(StringUtils::isNotEmpty).toArray(String[]::new);
System.out.println(Arrays.toString(lines));
System.out.println(Arrays.toString(result));
및 출력 : [a, b, , c, ] [a, b, c]
참조 URL : https://stackoverflow.com/questions/24112715/java-8-filter-array-using-lambda
반응형
'program story' 카테고리의 다른 글
Visual Studio를 설치하지 않고 빌드 에이전트에서 코드 분석 (FxCop> 10) 실행 (0) | 2020.12.30 |
---|---|
힘내 병합 : 여러 충돌에 대해 허용 (0) | 2020.12.30 |
Selenium을 사용하여 인증서를 처리하는 방법은 무엇입니까? (0) | 2020.12.30 |
Django REST Framework 사용자 정의 필드 유효성 검사 (0) | 2020.12.30 |
PHP 세션 데이터가 저장되지 않음 (0) | 2020.12.30 |