728x90
반응형
정렬, 배열이나 리스트를 정렬하는 방법
java.util.Arrays클래스의 sort() 메서드를 사용
오름차순이 기본타입이다.
숫자 - 오름차순
int arr[] = {4,8,15,2,3,19,12};
Arrays.sort(arr);
for(int i : arr){
System.out.print(i + " ");
}
//실행결과
//2 3 4 8 12 15 19
String 문자열 - 오름차순
int arr[] = {"apple","orange","banana","pear","peach","melone"};
Arrays.sort(arr);
for(int i : arr){
System.out.print(i + " ");
}
//실행결과
//apple banana melon orange peach pear
내림차순
int arr[] = {"apple","orange","banana","pear","peach","melone"};
Arrays.sort(arr,Collections.reverseOrder());
for(int i : arr){
System.out.print(i + " ");
}
//실행결과
// pear peach orange melon banana apple
CompareTo()
두개의 값을 비교하여 int 값으로 반환해주는 함수
숫자비교 -> 크다(1), 같다(0), 작다(-1)
문자열비교 -> 같다(0),
숫자비교(나이 기준 - 오름차순)
public class PersonDTO extends Object implements Comparable<PersonDTO> { //모든 클래스 안에는 [extends object]가 생략되어 있는 것
private String name;
private int age;
@Override
public int compareTo(PersonDTO p) {
// 나이로 오름차순
if(this.age < p.age) return -1; //-1 -> 두개의 비교값중 왼쪽이 더 크다
else if(this.age > p.age) return 1;
else return 0;
}
나이 기준 - 내림차순
// 나이로 내림차순
if(this.age < p.age) return 1;
else if(this.age > p.age) return -1; //-1 -> 두개의 비교값 중 왼쪽
else return 0;
- 기준 값과 비교대상이 동일한 값일 경우 0
- 기준 값이 비교대상보다 작은 경우 -1
- 기준 값이 비교대상 보다 큰 경우 1
문자열 비교 (이름 기준 오름 / 내림 차순)
//이름으로 오름차순 -- 문자열은 크다 작다 비교 안됨.
//ComareTo가 자체적으로 있음
return this.name.compareTo(p.name);
// 내림차순
return this.name.compareTo(p.name) * 1;
Compartor
내가 정의한 정렬 기준에 대해서 배열과 List Collection을 정렬할 수 있다.
Comparator<클래스타입> 클래스명 = new Comparator<클래스타입>()
compare 메소드 오버라이드해서 사용한다.
클래스 타입 비교대상 2개를 지역변수 o1, o2로 선언하고 return값으로 음수, 0, 양수를 변환하면서 정렬한다.
이름 기준 - 오름차순
Collections.sort(list);
for(PersonDTO personDTO : list) {
System.out.print(personDTO + " ");
}
이름 기준 - 내림차순
Comparator<PersonDTO> com = new Comparator<PersonDTO>() {
@Override
public int compare(PersonDTO p1, PersonDTO p2) {
return p1.getName().compareTo(p2.getName())* -1;
}
};
Collections.sort(list, com);
for(PersonDTO personDTO : list) {
System.out.print(personDTO + " ");
}
728x90
반응형
'Java' 카테고리의 다른 글
Java, 스레드, 동기화처리, 싱글톤 (0) | 2024.08.05 |
---|---|
Java, io Stream(InputStream, OutputStream) (0) | 2024.08.05 |
Java, Iterator(반복자) (0) | 2024.07.30 |
Java, Collection (Set, List,Map,Queue) (0) | 2024.07.30 |
Java, Iterator ( hasNext(), next(), remove() ) (0) | 2024.07.23 |