Android中对集合中的对象进行排序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pbm863521/article/details/79015998

最近需要一个对图片对象进行排序的功能。

思路:

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;
    }
}

猜你喜欢

转载自blog.csdn.net/pbm863521/article/details/79015998