[java] List 정렬하기

프로그래밍/Java 2011. 4. 6. 16:05 Posted by galad
http://ssami.tistory.com/291

정렬할 대상 List가 갖는 Info 클래스
###java;highlight: [27,28,29]
package com.omp.bp.cms.common.model;

public class CommonFileInfo implements Comparable<CommonFileInfo> {

    private String fileName;    // 파일명
    private String filePath;    // 파일경로
    private String name;        // 화면 표시용 이름

    public String getFileName() {
        return fileName;
    }
    public void setFileName(String fileName) {
        this.fileName = fileName;
    }
    public String getFilePath() {
        return filePath;
    }
    public void setFilePath(String filePath) {
        this.filePath = filePath;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int compareTo(CommonFileInfo o) {
        return fileName.compareTo(o.getFileName());
    }
}
compartTo 메소드가 Collections를 이용해 정렬할 때 사용된다.
Info 클래스의 구성원 중 하나만 가지고 비교할 때는 Comparable를 구현하는 방법을 사용하고,
여러 개의 구성원 중 선택해서 정렬하는 방식을 원할 때는 맨 위의 링크를 참고.

정렬하는 메소드
###java
/**
 * 파일 정보를 목록으로 생성. 파일명 역순 정렬.
 * @param files
 * @return
 */
private List<CommonFileInfo> getFileInfos(File[] files) {

    List<CommonFileInfo> list = new ArrayList<CommonFileInfo>();

    for(File f : files) {
        CommonFileInfo info = new CommonFileInfo();
        info.setName(f.getName());
        info.setFileName(f.getName());
        info.setFilePath(f.getAbsolutePath());

        list.add(info);
    }

    Collections.sort(list);        // 정렬
    Collections.reverse(list);    // 역순

    return list;
}