[나중에 쓰려고 기록]
Android Application 구현 과정에서 DB로 받아온 Model을 특정 조건에 맞게 정렬하는 것을 구현해야 했다.
(예를 들어, 최신 순, 인기 순, 댓글 많은 순 등)
따라서 Java ArrayList를 정렬하는 여러 링크를 참조하여 다음과 같은 class를 구현했다.
해당 프로젝트의 경우 정렬을 내림차순으로 해야했기에 return 값에 -1을 곱하여 정렬 결과의 reverse한 효과를 주었다.
오름차순으로 정렬해야 할 경우 -1을 지우면 된다.
최신 순은 String 타입의 날짜를 받아서 정렬해야했기에 compareTo() 함수를 사용했다.
SortArraylist.java
public class SortArraylist implements Comparator<DataModel>{
// 0 : 인기순, 1 : 최신순, 2 : 댓글 많은 순
private int sortType;
public SortArraylist(int sortType) {
this.sortType = sortType;
}
@Override
public int compare(DataModel o1, DataModel o2) {
switch (sortType){
case 0:
return Integer.compare(o1.getLikeCount(), o2.getLikeCount())*(-1);
case 1:
return o1.getDate().compareTo(o2.getDate())*(-1);
case 2:
return Integer.compare(o1.getCommentCount(), o2.getCommentCount())*(-1)
default:
return 0;
}
}
}
해당 클래스는 다음과 같이 사용할 수 있다.
Collections.sort(arraylist, new SortArraylist(int value));
참조한 링크
https://www.delftstack.com/ko/howto/java/how-to-sort-objects-in-arraylist-by-date-in-java/
Java에서 날짜별로 ArrayList의 객체를 정렬하는 방법 | Delft Stack
어떻게 Java 하우투 Java에서 날짜별로 ArrayList의 객체를 정렬하는 방법 Java에서 날짜별로 ArrayList의 객체를 정렬하는 방법 창립일자: June-14, 2020 | 갱신일자: June-25, 2020 Java의 날짜별로ArrayList의 객체
www.delftstack.com
stackoverflow.com/questions/32995559/reverse-a-comparator-in-java-8
Reverse a comparator in Java 8
I have an ArrayList and want sort it in descending order. I use for it java.util.stream.Stream.sorted(Comparator) method. Here is a description according Java API: Returns a stream consisting of...
stackoverflow.com
'안드로이드' 카테고리의 다른 글
IllegalStateException: No instrumentation registered! (0) | 2020.11.19 |
---|---|
[Android] Customizing Spinner arrow icon (0) | 2020.10.15 |
[Android] Java Convert Date (0) | 2020.10.15 |
[Android] TabLayout textsize & Icon 색상 & Indicator 변경 방법 (0) | 2020.09.15 |
[Android] 내장 메모리 파일 가져오기 (2) (0) | 2020.08.10 |