1. 程式人生 > >Android中對集合中的物件進行排序

Android中對集合中的物件進行排序

最近需要一個對圖片物件進行排序的功能。

思路:

1、新建一個類實現Comparator<?>,這個類是實現比較的關鍵類,一般做比較的型別為int或String。

public class OrderSortUtil implements Comparator<LocalFile> {
    @Override
    public int compare(LocalFile file1, LocalFile file2) {
        return file2.getMediaID()-file1.getMediaID();//降序。如果升序位置調換。
    }
}

如果物件的屬性為Int型別則比較方式為file2.getMediaID()-file1.getMediaID();

如果物件的屬性為String型別則比較方式為 file2.getUriStr.compareTo(file2.getUriStr);

以上為降序排列。如果升序則調換“-”前後資料的位置。

2、呼叫方法

使用Collections.sort(fileList,new OrderSortUtil())進行排序,第一個引數為要排序的物件集合,第二個引數為上面新建的比較類。

List<LocalFile> fileList = new ArrayList<LocalFile>();  
        for (int i = 0; i < 6; i++) {  
            LocalFile file = new LocalFile();  
            file.setMediaID(22 + i);
            file.setUriStr("content:/img/"+22+i);  
            fileList.add(file);  
        }  
          
        Collections.sort(fileList, new OrderSortUtil());  
        for (int i = 0; i < fileList.size(); i++) {  
            int mediaID = fileList.get(i).getMediaID();  
            System.out.println("mediaID=" + mediaID);  
        }  

實體類LocalFile:

public class LocalFile implements Parcelable {
    private int mediaID; //原圖的Media ID
    private String uriStr;//原圖URI

    public int getMediaID() {
        return mediaID;
    }

    public void setMediaID(int mediaID) {
        this.mediaID = mediaID;
    }

    public String getUriStr() {
        return uriStr;
    }

    public void setUriStr(String uriStr) {
        this.uriStr= uriStr;
    }
}