배열에 있는 값을 짝수만 중복을 제거해 역순으로 출력하는 코드
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