sitelink1 | https://mandolle7.blog.me/220139365293 |
---|---|
sitelink2 | |
sitelink3 | |
sitelink4 | |
sitelink5 | |
sitelink6 |
일반적인 list나 Map 형태의 데이터를 정렬하는 것은 쉽게 검색하실 수 있으실껍니다.
Comparable 을 implements 해서 CompareTo 메소드를 구현해가지고
Collections.sort(list) 를 하면 쉽게 데이터를 정렬하실 수 있으실 텐데요.
저는 List<Map<String, String>> 이런 이중구조로 되어 있는 데이터를 정렬하려고 합니다.
데이터를 넣는 과정은 생략하겠습니다...
...
반복문을 돌면서
map.put(key, value); ...
map 구조에 키, 밸류 데이터를 넣고
list.add(map); 을 해서 list 에 Map<String, String> 형식의 데이터가 들어갔다고 예를들겠습니다.
1 |
Collections.sort(list, orderSort);
|
위와 같이 list라는 데이터를 orderSort 라는 Comparator 로 정렬하겠다는 뜻입니다.
그럼 orderSort라는 Comparator 메소드를 구현해야 합니다.
1
2
3
4
5
6
7
8
9
10
11
12
|
/**
* PlayOrder 순으로 List<Map> 정렬하기
*/
private final static Comparator<Map<String,String>> orderSort = new Comparator<Map<String,String>>() {
private final Collator collator = Collator.getInstance();
@Override
public int compare(Map<String, String> lhs, Map<String, String> rhs) {
// TODO Auto-generated method stub
return collator.compare(lhs.get("playorder"), rhs.get("playorder"));
}
};
|
짜잔.
끝입니다.
정렬을 정말 간단하게 끝냈네요.
저는 Map key 값이 playorder 가 오름차순으로 정렬되게끔 하였습니다.
저처럼 list<Map<String, String>> 이중구조가 아니라 List<String> 구조라면
comparator<String> ... = new Comparator<String>() { ....
이런식으로 하시면 됩니다.
[출처] [JAVA] Comparator를 이용한 Collections.Sort 정렬 (list<map<>>)|작성자 종벌
[별첨 샘플코드]
Comparator<Task> comparator = new Comparator<Task>() {
private final Collator collator = Collator.getInstance();
@Override
public int compare(Task o1, Task o2) {
return collator.compare(o1.getDate_due(), o2.getDate_due()); //역순인 경우엔 (* -1)
}
};
Collections.sort(readyList, comparator);