最近需要一个对图片对象进行排序的功能。
思路:
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;
}
}