안드로이드로 개발하면서 정렬기능을 사용할때가 있는데요, 아래처럼 구현하면 별다른 시간투자없이 한방에 해결됩니다. 예전에는 quick sort니 bubble sort니 자료구조를 배우면서 구현했었는데 이제는 API단에서 다 제공해주니 개발시간이 점점단축되네요.


먼저 정렬에 사용될 자료의 구조입니다.


public class Person {


    // 이름

    public String name;


    // 전화번호

    public String phoneNumber;


    // 전체통화수

    public int totalCall;


    // 전체 통화시간

    public int totalDuration;


    // 마지막 통화 날짜 및 시간

    public Long lastContact;

}



// Activity 클래스

public class MainActivity extends AppCompatActivity {


    // Person 자료를 가지고 있을 ArrayList 선언

    private ArrayList<Person> personList = null;


    ...


    // personList에 내용은 들어있다고 가정합니다.


}


먼저 Integer 타입의 sort 방법입니다. 정렬에 사용될 Comparator를 하나 만들어 주고요, 이걸 호출해 주면 끝납니다.


// 호출 예제

Collections.sort(personList, sortByTotalCall);


// 역순으로 정렬시 호출

Collections.reverse(personList);


// Integer type sorting example

private final static Comparator<Person> sortByTotalCall= new Comparator<Person>() {

        @Override

        public int compare(Person object1, Person object2) {

            return Integer.compare(object1.totalCall, object2.totalCall);

        }

};


보시면 아시겠지만 데이터 타입별로 compare 를 호출할 클래스를 별도로 지정해 줘야하는데요,


Int 타입이면 Integer.compare

Long 타입이면 Long.compare

Float 타입이면 Float.comare

String 타입이면 Collator.getInstance().compare


요렇게 호출해 주면되어요.

정렬문제 쉽게 해결되죠?


이상 안드로이드에서 Comparator 를 활용한 sorting 문제 해결 방법이었습니다.