JAVA에서는 Arrays.sort()를 이용하면 배열을 쉽게 정렬할 수 있다. sort()는 Comparable에 의해 리턴되는 값을 비교하여 오름차순 또는 내림차순으로 정렬한다.
오름차순 정렬
int[] arr = {1, 10, 4, 17, 9, 25, 3};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
[1, 3, 4, 9, 10, 17, 25]
내림차순 정렬
Integer[] arr = {1, 10, 4, 17, 9, 25, 3};
Arrays.sort(arr, Collections.reverseOrder());
System.out.println(Arrays.toString(arr));
//Comparator 구현
Integer[] arr2 = {1, 10, 4, 17, 9, 25, 3};
Arrays.sort(arr2, new Comparator<Integer>(){
@Override
public int compare(Integer i1, Integer i2) {
return i2 - i1;
}
});
System.out.println(Arrays.toString(arr2));
//lambda 이용
Integer[] arr3 = {1, 10, 4, 17, 9, 25, 3};
Arrays.sort(arr3, (i1, i2) -> i2 - i1);
System.out.println(Arrays.toString(arr3));
[25, 17, 10, 9, 4, 3, 1]
정렬할 범위인 처음 index와 마지막 index를 전달하여 해당 범위만 정렬할 수 있다.
int[] arr = {1, 10, 4, 17, 9, 25, 3};
Arrays.sort(arr, 0, 4);
System.out.println(Arrays.toString(arr));
[1, 4, 10, 17, 9, 25, 3]
String[] arr = {"Apple", "Kiwi", "Orange", "Banana", "Watermelon", "Cherry"};
Arrays.sort(arr, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.length() - s2.length();
}
});
System.out.println("Sorted arr[] : " + Arrays.toString(arr));
//lambda 이용
String[] arr2 = {"Apple", "Kiwi", "Orange", "Banana", "Watermelon", "Cherry"};
Arrays.sort(arr2, (s1, s2) -> s1.length() - s2.length());
System.out.println(Arrays.toString(arr2));
[Kiwi, Apple, Orange, Banana, Cherry, Watermelon]
오름차순
int [][] arr = {{3,5}, {4,2}, {3,4}};
Arrays.sort(arr, 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];
}
}
});
3 5
4 2
5 4
내림차순
int [][] arr = {{3,5}, {4,2}, {3,4}};
Arrays.sort(arr, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if(o1[0] == o2[0]) {
return o2[1] - o1[1];
}else {
return o2[0] - o1[0];
}
}
});
5 4
4 2
3 5