Primitive type array의 sort는 Arrays.sort()
메소드를 사용한다.
Arrays.sort()
는 void
리턴을 가진다.`String.replaceOf("s", "a")는 String 객체를 리턴
int[] num1 = { 50, 24, 67, 85, 75 };
Arrays.sort(num1);
System.out.println(Arrays.toString(num1));
기본적으로 오름차순으로 정렬된다.
Collection.sort()
를 이용해서 오름차순으로 정렬 가능하다.Collection.revere()
를 이용해서 내림차순으로 정렬 가능하다.public class Car implements Comparable<Car>{
private String maker;
@Override
public int compareTo(Car o) {
// TODO Auto-generated method stub
return this.maker.compareTo(o.getMaker()); // 메이커를 기준으로 정렬
}
}
Comparable
을 사용하면 Collections.sort()
에서 compareTo
를 사용하여 정렬한다.Comparable
은 다양한 정렬 조건을 적용하여 정렬하는 것은 무리가 있다.Integer
list의 정렬
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
// TODO Auto-generated method stub
return o2.intValue() - o1.intValue();
}
});
class Person {
int id;
int age;
public int getAge() {
return age;
}
}
위와 같은 Person
클래스에 대해서 먼저 age
에 대하여 내림차순 정렬 age
가 같다면 id에 대해서 오름차순으로 정렬해 보자
Collections.sort(list, new Comparator<Person>() {
@Override
public int compare(Person p1, Person p2) {
if (p1.age == p2.age) {
return p1.id - p2.id;
}
return p2.age - p1.age;
}
위와 같이 이중 정렬을 사용할 수 있다.
람다식을 활용하여 Person
클래스의 age
내림차순으로 PriorityQueue
를 선언해 보겠습니다.
방법 1)
new PriorityQueue<>((o1, o2) -> o2.age - o1.age);
방법 2)
new PriorityQueue<>((o1, o2) -> Integer.compare(o2.getAge(), o1.getAge()));
추가로 Comparator.comparing()
를 활용하여 정렬하는 방법도 가능하다.
Collections.sort(list, Comparator.comparing(Person::getAge));