본문 바로가기
안드로이드

[Android] Java ArrayList<DataModel> Sorting

by Banlim 2020. 10. 15.

[나중에 쓰려고 기록]

 

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