상세 컨텐츠

본문 제목

[Stream] slice method

기록 - 프로그래밍/Java

by wjjun 2020. 7. 27. 22:04

본문

Slicing

배열에 있는 특정 요소만 추출하여, 그 결과를 스트림으로 반환합니다.


slicing method 3가지

공통 소스

public class CommonFeaturesMain {

  private List<String> students;

  @Before
  public void testCreateList() {
    students= new ArrayList<>();
    students.add("Kane");
    students.add("Jane");
    students.add("Joo");
    students.add("charly");
    students.add("charly");
    students.add("charly");
    students.add("Joo");
    students.add("Jane");
  }

...

1. distinct()

java.util.stream 패키지

Stream<T> distinct();

배열에서 중복된 요소는 하나만 추출하고 나머지는 제외합니다. 추출된 결과는 스트림으로 반환됩니다.

(개인이 정의한 객체 스트림을 사용하는 경우 equals(), hashcode() 메서드 재정의가 필요합니다)

@Test
  public void testDistinct() {
    students.stream()
        .distinct()
        .forEach(System.out::println);
  }

---출력결과---
Kane
Jane
Joo
charly

2. limit()

java.util.stream 패키지

Stream<T> limit(long maxSize);

parameter maxSize 만큼의 숫자로 스트림의 요소를 제한합니다.

limit(5)는 스트림의 요소를 5개로 제한합니다.

@Test
public void testLimit() {
  students.stream()
      .limit(5)
      .forEach(System.out::println);
}

---출력결과---
Kane
Jane
Joo
charly
charly

3. skip()

java.util.stream 패키지

Stream<T> skip(long n);

배열의 맨 앞 요소부터 skip() parameter의 숫자 크기만큼 요소를 제외한 스트림을 반환합니다.

@Test
public void testSkipNotDistinct(){
  students.stream()
      .skip(4)
      .forEach(System.out::println);
}

---출력결과---
charly
charly
Joo
Jane

distinct를 함께 사용하면 중복된 요소를 제외한 스트림 객체가 먼저 생성됩니다.

생성된 스트림 객체의 맨 앞 요소부터 skip() parameter의 숫자 크기만큼 요소를 제외한 스트림을 반환합니다.

@Test
public void testSkip(){
  students.stream()
      .distinct()
      .skip(2)
      .forEach(System.out::println);
}

---출력결과---
Joo
charly

'기록 - 프로그래밍 > Java' 카테고리의 다른 글

[Stream] reduce method  (0) 2020.07.29
[Stream] Match method  (0) 2020.07.28
[Stream] Optional 클래스  (0) 2020.07.23
[Stream] Method references  (0) 2020.07.22
[Stream] map() flatMap()  (0) 2020.07.20

관련글 더보기

댓글 영역