Android中對集合中的物件進行排序
阿新 • • 發佈:2018-11-01
最近需要一個對圖片物件進行排序的功能。
思路:
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; } }