KKG
Programming
KKG
전체 방문자
오늘
어제
  • 전체 글 보기 (84)
    • 회고 (9)
    • Bootcamp (19)
    • Error Handling (2)
    • Kotlin (1)
    • Java (19)
      • Java (14)
      • Spring (1)
      • JPA (2)
      • Link (2)
    • Python (5)
    • 알고리즘 (20)
      • 알고리즘 (4)
      • 백준 (14)
      • 프로그래머스 (1)
      • Link (1)
    • SQL (5)
      • SQL (1)
      • MySQL (4)
    • Web (2)
    • etc (1)

블로그 메뉴

  • 태그
  • 방명록
  • 깃허브

인기 글

티스토리

hELLO · Designed By 정상우.
KKG

Programming

Java/Java

[Java] Stream

2022. 2. 2. 16:05

배열에 있는 값을 짝수만 중복을 제거해 역순으로 출력하는 코드

import java.util.*;

public class Exam {
    public static void main(String[] args) {
        int[] arr = {5, 4, 3, 2, 1, 1, 2, 3, 4, 5};

        
        ArrayList<Integer> list = new ArrayList<>(); 
        for(int i=0; i<arr.length; i++) { 		// ArrayList에 짝수 값만 추가
            if(arr[i] % 2 == 0) {
                list.add(arr[i]);
            }
        }

        HashSet<Integer> set = new HashSet<>(list); 	// Set 사용 중복 제거
        list = new ArrayList<>(set); 			// 다시 List로 변경
        list.sort(Comparator.reverseOrder());         	// 역순 정렬

        int[] result = new int[list.size()]; 		// Integer 리스트를 정수 배열로 변환
        for(int i=0; i<list.size(); i++) {
            result[i] = list.get(i);
        }    
        
        for(int i=0; i<result.length; i++){ 		// 출력
            System.out.println(result[i]);
        
        }
    }
}
출력값
4
2

 

stream을 이용해 위의 코드를 아래와 같이 작성할 수 있다.

import java.util.Arrays;
import java.util.Comparator;

public class Exam {
    public static void main(String[] args) {
        int[] arr = {5, 4, 3, 2, 1, 1, 2, 3, 4, 5};
        int[] result = Arrays.stream(arr)  		// IntStream을 생성
                .boxed()  				// IntStream을 Stream<Integer>로 변경
                .filter((a) -> a % 2 == 0)  		// 짝수만 남김
                .distinct()  				// 중복 제거
                .sorted(Comparator.reverseOrder())  	// 역순 정렬
                .mapToInt(Integer::intValue)  		// Stream<Integer>를 IntStream으로 변경
                .toArray();  				// int[] 배열로 반환
        
        for(int i=0; i<result.length; i++){ 		// 출력
            System.out.println(result[i]);
        }
    }
}
출력값
4
2
    'Java/Java' 카테고리의 다른 글
    • [Java] Convert Char to Int, Int to Char
    • [Java] java.time 패키지
    • [Java] Calendar
    • [Java] Date

    티스토리툴바