int의 Arrays.sort()
int[] n = {331, 75, 65, 90, 802, 524, 2, 66};
Arrays.sort(n);
결과 : [2, 65, 66, 75, 90, 331, 524, 802]
int에서 바로 내림차순은 불가능
Integer[] integers = new Integer[n.length];
for (int i = 0; i < n.length; i++) {
integers[i] = n[i];
}
Integer로 바꾸어 주고 내림차순으로 정렬
Arrays.sort(integers, new Comparator<Integer>() { // 직접 구현하기
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
Arrays.sort(integers, (o1, o2) -> o2 - o1); // 람다식을 이용하기
Arrays.sort(integers, Comparator.reverseOrder()); // reverseOrder()를 이용하기
결과 : [802, 524, 331, 90, 75, 66, 65, 2]
String의 Arrays.sort()
String[] s = {"C", "A", "B", "D", "F", "A"};
Arrays.sort(s);
결과 : [A, A, B, C, D, F]
String의 내림차순 정렬
String[] s = {"C", "A", "B", "D", "F", "A"};
Arrays.sort(s, new Comparator<String>() { // 직접 구현하기
@Override
public int compare(String o1, String o2) {
return o2.compareTo(o1);
}
});
Arrays.sort(s,(o1, o2) -> o2.compareTo(o1)); // 람다식을 이용하기
Arrays.sort(s,Comparator.reverseOrder()); // reverseOrder()를 이용하기
결과 : [F, D, C, B, A, A]
배열 중 일부분만 정렬하기 Arrays.sort(배열, 시작, 끝)
int[] n = {331, 75, 65, 90, 802, 524, 2, 66};
Arrays.sort(n, 0, 5);
결과 : [65, 75, 90, 331, 802, 524, 2, 66] 0~4까지 정렬되었다.
String[] s = {"C", "A", "B", "D", "F", "A"};
Arrays.sort(s, 0, 4);
결과 : [A, B, C, D, F, A] 다른 자료형도 가능할 것이다.
배열 채우기 -> Arrays.fill(배열, 채울내용)
int[] m = new int[10];
Arrays.fill(m, 10);
결과 : [10, 10, 10, 10, 10, 10, 10, 10, 10, 10]
String[] st = new String[10];
Arrays.fill(st, "a");
결과 : [a, a, a, a, a, a, a, a, a, a] 다른 자료형도 가능할 것이다.
직접 구현하는 방법을 이용하여 다양한 경우에서 정렬이 가능하게 할 수 있다.
이중 배열의 경우 배열의 0번끼리 비교를 하다가 만약 같다면 1번을 비교하여 정렬하게 만들 수 있다.
int[][] n = {{4,8}, {4,5}, {10,14}, {11,13}, {5,12}, {3,7}, {1,4}};
Arrays.sort(n, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if (o1[0] == o2[0]) return o1[1] - o2[1];
else return o1[0] - o2[0];
}
});
결과 : [[1, 4], [3, 7], [4, 5], [4, 8], [5, 12], [10, 14], [11, 13]]
이렇게 직접 조건을 만들어서 정렬을 할 수 있다.
'Java' 카테고리의 다른 글
[JAVA] 정렬 여러가지 (0) | 2023.04.26 |
---|---|
[JAVA] 디자인 패턴 (0) | 2023.03.07 |