Java8 IntStream,LongStream,DoubleStream
4926 단어 자바
우 리 는 자바 8 중의
IntStream
,LongStream
과 DoubleStream
의 사용 사례 를 제공 합 니 다.IntStream
,LongStream
과 DoubleStream
은 각각 원시 int
류,원시 long
류 와 원시 double
류 를 나타 낸다.이 세 개의 원시 흐름 류 는 스 트림 의 데 이 터 를 조작 하 는 데 대량의 방법 을 제공 하 는 동시에 해당 하 는 정적 방법 을 제공 하여 자신 을 초기 화 했다.
이 세 개의 원시 흐름 은 모두
java.util.stream
네 임 스페이스 에 있다.java.util.stream.IntStream
java.util.stream.IntStream
은 원시 정수 서열(sequence)이다.이 흐름 은 이 흐름 의 요소 순 서 를 수행 하거나 취 합 작업 을 병행 할 수 있 는 많은 방법 을 제공 합 니 다.예 를 들 어 max()
또는 average()
등 입 니 다.집합 방법
방법.
설명 하 다.
rangeClosed(a,b)
하위 시퀀스[a,b)를 되 돌려 주 고 왼쪽 닫 고 또 엽 니 다.b 요 소 를 포함 하여 성장 단계 가 1 임 을 의미 합 니 다.
range(a,b)
하위 시퀀스[a,b)를 되 돌려 주 고 왼쪽 을 닫 고 오른쪽 을 열 면 b 가 포함 되 지 않 음 을 의미 합 니 다.
sum
모든 원소 의 총 계 를 계산 하 다
sorted
정렬 요소
이 방법 들 은 예 를 들 어 다음 과 같다.
IntStreamDemo.java
package cn.twle.util.stream;
import java.util.stream.IntStream;
public class IntStreamDemo {
public static void main(String[] args) {
System.out.println("--Using IntStream.rangeClosed--");
IntStream.rangeClosed(13, 15).map(n->n*n).forEach(s->System.out.print(s +" "));
System.out.println("
--Using IntStream.range--");
IntStream.range(13,15).map(n->n*n).forEach(s->System.out.print(s +" "));
System.out.println("
--Sum of range 1 to 10--");
System.out.print(IntStream.rangeClosed(1,10).sum());
System.out.println("
--Sorted number--");
IntStream.of(13,4,15,2,8).sorted().forEach(s->System.out.print(s +" "));
}
}
실행 결 과 는 다음 과 같다.
--Using IntStream.rangeClosed--
169 196 225
--Using IntStream.range--
169 196
--Sum of range 1 to 10--
55
--Sorted number--
2 4 8 13 15
LongStream
java.util.stream.LongStream
은 원시 장정 형 값 서열(sequence)이다.이 흐름 은 이 흐름 의 요소 순 서 를 실행 하거나 취 합 작업 을 병행 할 수 있 는 많은 방법 을 제공 합 니 다.사실 그것 의 사용 방식 은 IntStream
과 마찬가지 로 제공 하 는 방법 도 같 기 때문에 우 리 는 전개 하지 않 고 범례 를 직접 보 았 다.LongStreamDemo.java
package cn.twle.util.stream;
import java.util.stream.LongStream;
public class LongStreamDemo {
public static void main(String[] args) {
System.out.println("--Using LongStream.rangeClosed--");
LongStream.rangeClosed(13, 15).map(n->n*n).forEach(s->System.out.print(s +" "));
System.out.println("
--Using LongStream.range--");
LongStream.range(13,15).map(n->n*n).forEach(s->System.out.print(s +" "));
System.out.println("
--Sum of range 1 to 10--");
System.out.print(LongStream.rangeClosed(1,10).sum());
System.out.println("
--Sorted number--");
LongStream.of(13,4,15,2,8).sorted().forEach(s->System.out.print(s +" "));
}
}
출력 결 과 는 다음 과 같다.
--Using LongStream.rangeClosed--
169 196 225
--Using LongStream.range--
169 196
--Sum of range 1 to 10--
55
--Sorted number--
2 4 8 13 15
DoubleStream
java.util.stream.LongStream
은 원시 이중 정밀도 부동 소수점 형 서열(sequence)이다.이 흐름 은 이 흐름 의 요소 순 서 를 실행 하거나 취 합 작업 을 병행 할 수 있 는 많은 방법 을 제공 합 니 다.그것 의 사용 방식 은 IntStream
과 마찬가지 로 제공 하 는 방법 도 마찬가지 이 며,이외에 몇 가지 집합 방법 을 추가 로 제공 하 였 다방법.
설명 하 다.
average
평균 값 을 계산 하 다
max
최대 값 찾기
다음 코드 는 DoubleStream 류 의 간단 한 사용 예제 입 니 다.
package cn.twle.util.stream;
import java.util.function.DoublePredicate;
import java.util.stream.DoubleStream;
public class DoubleStreamDemo {
public static void main(String[] args) {
System.out.println("--Using DoubleStream.of--");
DoubleStream.of(5.33,2.34,5.32,2.31,3.51).map(d->d*1.5).forEach(s->System.out.print(s +" "));
System.out.println("
--Using DoubleStream.average--");
double val = DoubleStream.of(12.1,11.2,13.3).average().getAsDouble();
System.out.println(val);
System.out.println("--Using DoubleStream.max--");
val = DoubleStream.of(12.1,11.2,13.3).max().getAsDouble();
System.out.println(val);
System.out.println("--Using DoubleStream.filter--");
DoublePredicate range = d -> d > 12.11 && d < 12.99;
DoubleStream.of(12.1,11.2,12.3).filter(range).forEach(d->System.out.print(d));
}
}
출력 결 과 는 다음 과 같다.
--Using DoubleStream.of--
7.995 3.51 7.98 3.465 5.265
--Using DoubleStream.average--
12.200000000000001
--Using DoubleStream.max--
13.3
--Using DoubleStream.filter--
12.3
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.