IntStream intStream = new Random().ints();
IntStream intStream = new Random().ints(7,5, 10);// 5<= <10 랜덤 숫자 7개
intStream.limit(10).forEach(System.out::println);
IntStream ints() : int 타입의 난수들로 이루어진 스트림을 반환한다. 괄호 안을 비워두면 limit()으로 크기를 제한해 줘야 된다. 그렇지 않으면 무한 스트림이 생성된다.
LongStream longs(), Doubles doubles()등도 있다.
ints(5) : 크기가 5인 정수 난수 스트림을 반환
ints(7, 5, 10) : 크기가 7인 5 이상 10 미만의 정수로 이루어진 난수 스트림 반환
Stream<Integer> intStream = Stream.iterate(0, n -> n+2);
intStream.limit(10).forEach(System.out::println);
Stream.iterate(0, n -> n+2) : 초기값이 0이면서 n+2를 수행하는 무한 스트림 반환 limit으로 크기를 지정해 줘야 한다.
iterate와 generate는 IntStream과 같은 기본형 스트림 타입의 참조 변수로 다룰 수 없다.
IntStream evenStream = Stream.iterate(0, n -> n+2); // 에러
중간 연산 : 연산 결과가 스트림인 연산, 여러 번 가능
최종 연산 : 연산 결과가 스트림이 아닌 연산, 한 번만 가능
import java.util.Comparator;
import java.util.stream.Stream;
public class Ex14_5 {
public static void main(String[] args) {
Stream<Student> studentStream = Stream.of(
new Student("이자바", 3, 300),
new Student("김자바", 1, 200),
new Student("안자바", 2, 100),
new Student("박자바", 2, 150),
new Student("소자바", 1, 200),
new Student("나자바", 3, 290),
new Student("감자바", 3, 180)
);
studentStream.sorted(Comparator.comparing(Student::getBan)).forEach(System.out::println);
}
}
class Student implements Comparable<Student> {
String name;
int ban;
int totalScore;
public String getName() {
return name;
}
public int getBan() {
return ban;
}
public int getTotalScore() {
return totalScore;
}
public Student(String name, int ban, int totalScore) {
this.name = name;
this.ban = ban;
this.totalScore = totalScore;
}
@Override
public String toString() {
return String.format("[%s, %d, %d]", name, ban, totalScore);
}
public int compareTo(Student s) {
return s.totalScore - this.totalScore; // 총점 내림차순을 기본 정렬로 한다.
}
}
String.format() : 문자열의 형식을 설정한다. %d 정수, %s 문자열 등
sorted(Comparator.comparing(Student::getBan)) : 반을 기준으로 정렬한다. (기본 설정은 총점으로 해둠)