본문 바로가기

JAVA

스트림4 중간연산 예제

스트링의 중간연산 예제

Stream<T> skip (long n) //앞에서부터 n개 뛰어넘기

Stream<T> limit (long maxsize) //maxsize 이후에 요소는 잘라냄

 

IntStream intStream = IntStream.rangeClosed(1,10) //12345678910

intStream.skip(3).limit(5).forEach(system.out.println("")) //45678

//.skip(3) 앞에서 3개 건너 뛰기 45678910

//.limit(5) 앞에서부터 5개 만 가져오기 45678

 

IntStream intStream = IntStream.of(1,2,2,3,3,3,4,5,5,6)

intStream.distinct().forEach(system.out.println("")) //123456

//.distinct() 중복제거 123456

 

IntStream intStream = IntStream.rangeClosed(1,10) 12345678910

intStream.filter(i -> i%2 ==0).forEach(system.out.println("")) //246810

//.filter(i -> i%2 ==0) //2 4 6 8 10 //조건에 맞지 않으면 제거

 

intStream.filter(i -> i%2 !=0 && i %3 !=0).forEach(system.out.println(""))

//.filter(i -> i%2 !=0 && i %3 !=0) 1 5 7

 

intStream.filter(i -> i%2 != 0).filter(i -> i%3 !=0).forEach(system.out.print(""))

//.filter(i -> i%2 != 0) 1 3 5 7 9

//.filter(i -> i%3 != 0) 1 5 7

 

Stream<T> sorted() //정렬 기준이 없으면 스트림이 가지고 있는 기본 정렬로 정렬된다.

Stream<T> sorted(comparator <? super T> comparator) //지정된 comparator

 

StrStream.sorted() //기본정렬

StrStream.sorted(comparator.raturalOrder()) //기본정렬

StrStream.sorted((s1, s2) -> s1.compareTo(s2))

StrStream.sorted(String::compareTo) // 매서드 참조 , 위문장과 동일

 

StrStream.sorted(comparator.reverseOrder()) //기본정렬의 역순

StrStream.sorted(comparator.<String>naturalOrder().reversed())

 

StrStream.sorted(String.CASE_INSESTIVE_ORDER) //대소문자 구분안함

 

StrStream.sorted(String.CASE_INSESTIVE_ORDER.reversed())

 

StrStream.sorted(comparator.comparing(String::length)) //길이순 정렬

StrStream.sorted(comparator.comparingInt(String::length)) //no으로 박싱

 

StrStream.sorted(comparator.compuring(String ::length).reversed())

 

Comparator 와 paring() 으로 정렬기준을 제공

Comparing(function <T,U> keyExtractor)

Comparing(function <T,U> keyExtractor , comparator<U> keyComparator)

 

studendStream.sorted(comparator.comparing(student::getBan).forEach(system::pringln));

 

추가 정렬 기준을 제공할 때는 thenComparing()을 사용

thenComparing(comparing<T> other)

thenComparing(function<T,U> keyExtractor)

thenComparing(function<T,U> keyExtractor , Comparator<U> keyComp)

 

StudentStream.sorted(comparator.comparing(student::getBan)// 반별로 정렬

.thenComparing(student::getTotalScore) //성적별 정렬

.thenComparing(student::getName) //이름으로 정렬

.forEach(system::pringln)

)