JAVA 객체에 있는 변수를 기준으로 정렬하기
by 으렴객체에 있는 변수를 기준으로 정렬하는 방법을 설명하려고 한다.
여기서 가장 중요한 것은 Collections객체에 들어있는 Comparator인터페이스이다.
Comparator는 약간의 규칙만 정해주면 얼마든지 활용하기 좋다.
linkedlist에 객체를 담아보쟈
객체를 만들쟈
class Card {
int n;
String s;
public Card(int n, String s) {
this.n = n;
this.s = s;
}
public int getN() {
return n;
}
public void setN(int n) {
this.n = n;
}
public String getS() {
return s;
}
public void setS(String s) {
this.s = s;
}
public void outPut() {
System.out.println("> " + this.n + "/" + this.s);
}
}
String s는 걍 장식이다.
LinkedList<Card> list = new LinkedList<Card>(); // 숫자를 기준으로 정렬할거당
for (int i = 0; i < 5; i++) {
int temp = (int) (Math.random() * 100) + 1;
list.add(new Card(temp, i + "data"));
}
for (Card item : list) {
item.outPut();
}
이렇게 만들고 무작위 integer type의 값을 객체에 담아봅시다
출력이 무작위로 되었을 것이다.
첫 번째이다.
Collections.sort(list,new Comparator<Card>() { // 기본1
@Override
public int compare(Card c1, Card c2) {
if(c1.n>c2.n) {
return +1; //양수
}else {
return -1; //음수
}
}
});
System.out.println("---------------");
for (Card item : list) {
item.outPut();
}
Comparator는 퀵정렬(정렬 중 제일 빠름)을 구현하고 있으며 가장 최적화 되어있는 정렬로 알고있다.
이 Comparator는 정렬프로그램이 아니다. 약간의 규칙만 정해주면 자기가 알아서 정렬을 해준다.
두 변수를 받아 그안의 비교값을 찾아 음수와 양수를 갖다주면 끝이다.
Collections.sort(list, new Comparator<Card>() { //기본2
@Override
public int compare(Card c1, Card c2) {
return (c1.n > c2.n) ? +1 : -1;
}
});
위의 코드를 줄여보았다.
Collections.sort(list, new Comparator<Card>() {
@Override
public int compare(Card c1, Card c2) {
return c1.n - c2.n;
// return c2.n - c1.n; //역순 정렬
}
});
더 줄여보아따
Collections.sort(list, (c1, c2) -> {
return c2.n - c1.n;
});
람다식이다.
Collections.sort(list, (c1, c2) -> c1.n - c2.n );
람다식 한번 더써따
자
람다식을 사용하면 위처럼 코드가 간결해진다.
무조건 위와 같은 람다식을 사용해야하느냐? 라고한다면 아니다.
만약 인수가 integer가 아닌 float이라면 5개의 코드 예제중 아래 3개는 사용할 수가 없다.
주석 달아 놓은 기본1과 기본2만 사용해야한다.
'Programming Language > JAVA' 카테고리의 다른 글
JAVA ojdbc 뒤의 숫자는 무엇인가? (0) | 2019.08.08 |
---|---|
cmd에서 java run시키깅 (0) | 2019.07.24 |
JAVA에서의 LinkedList 설명과 사용법 그리고 함수 (0) | 2019.07.21 |
Stack Unwinding 스택풀기 :: 스레드 반복, 람다식 등 활용 (0) | 2019.07.18 |
Lambda Expressions 람다식의 활용 - 껍데기 (0) | 2019.07.18 |
사이트의 정보
코딩하렴
으렴