List排序简单记录

Java2024年7月18日 pm3:59发布2个月前更新 91es.com站长
126 0 0
目录

前言

简单整理一下List的集合的排序,简单的记录一下,方便自己后续查阅。

正文

这里介绍一下使用ComparableComparator进行排序

Comparable

在实现的FileInfo实现Comparable,然后实现排序compareTo()即可。具体如下

public class FileInfo implements Comparable<FileInfo> {
    private String mPath = null;
    private String mName = null;
    private String mDate = null;

    public String getPath() {
        return mPath;
    }

    public void setPath(String path) {
        mPath = path;
    }

    public String getName() {
        return mName;
    }

    public void setName(String name) {
        mName = name;
    }

    public String getDate() {
        return mDate;
    }

    public void setDate(String date) {
        mDate = date;
    }
    
    @Override
    public int compareTo(FileInfo o) {
        return Collator.getInstance(Locale.ROOT).compare(getName(), o.getName());
    }
}

注意,我这里是以字母排序A-Z顺序排序。

如果要使用其他的比较方法,只需要改变compareTo()中的比较即可。

还可以比较文件大小。

@Override
public int compareTo(FileInfo o) {
    return (int) (getSize()-o.getSize());
}

通实现Comparable接口,就可以使用下面方法进行排序。

List<FileInfo> listFile = new ArrayList<>();

//添加数据
listFile.add(...);

//排序
Collections.sort(listFile);

Comparator

这种方式FileInfo不需要实现其他接口,如下。

public class FileInfo {
    private String mPath = null;
    private String mName = null;
    private String mDate = null;

    public String getPath() {
        return mPath;
    }

    public void setPath(String path) {
        mPath = path;
    }

    public String getName() {
        return mName;
    }

    public void setName(String name) {
        mName = name;
    }

    public String getDate() {
        return mDate;
    }

    public void setDate(String date) {
        mDate = date;
    }
}

这里可以分三种方式单独记录。

方式1
listFile.sort(new Comparator<FileInfo>() {
    @Override
    public int compare(FileInfo o1, FileInfo o2) {
        return Collator.getInstance(Locale.ROOT).compare(o1.getName(), o2.getName());
    }
});
方式2
Collections.sort(listFile, new Comparator<FileInfo>() {
    @Override
    public int compare(FileInfo o1, FileInfo o2) {
        return Collator.getInstance(Locale.ROOT).compare(o1.getName(), o2.getName());
    }
});
方式3

JDK 8之后还可以使用

listFile= listFile.stream().sorted(new Comparator<FileInfo>() {
    @Override
    public int compare(FileInfo o1, FileInfo o2) {
        return Collator.getInstance(Locale.ROOT).compare(o1.getName(), o2.getName());
    }
}).collect(Collectors.toList());

参考文章

  1. Java中List排序的3种方法

 历史上的今天

  1. 2023: NDK中jni.h头文件完整内容(0条评论)
  2. 2023: JNI动态注册封装C++版(0条评论)
  3. 2021: 海子:麦子熟了(0条评论)
  4. 2019: 严歌苓:读书是生命的另一种存在(0条评论)
版权声明 1、 本站名称: 91易搜
2、 本站网址: 91es.com3xcn.com[备用域名]
3、 本站内容: 部分来源于网络,仅供站长学习和参考,若侵权请留言

暂无评论

暂无评论...

随机推荐

[摘]Android CircleImageView圆形头像图片

前言本文摘抄,记录于此,方便自己查阅而已。正文Android想要使用ImageView圆形头像图片,可以自己定义一个CircleImageView继承ImageView类,也可以使用Glide框架来加载ImageView圆形图片,下面分别来介绍这两种形式。方法一:定义CircleImage...

Android消息机制之一基础简介(1)

在项目中,使用Handler是比较多的,延迟处理信息啊,或者跨线程刷新UI界面啊等.用大家都会用,但要用好,或许只能多看看源码和跟大牛们学习学习了.Handler.java,Looper.java,Message.java,MessageQueue.java这几个类主要是在/frameworks/...

斯蒂芬.金:戒烟公司

莫里森在机场接人。他等的航班遇上了空中管制,飞机在肯尼迪机场上空盘旋,等待降落的指令。这个时候,他看见柜台那头有一个人很面熟,他朝他走去。“吉米?是吉米·麦卡恩吗?”真的是他。比一年前亚特兰大展销会时稍稍胖了一些,否则,他肯定看上去健康得让人嫉妒。上大学的时候,他很瘦,面色暗黄,烟抽得很凶,鼻...

AudioTrack简单简介之四:wav去掉文件头之解决爆音

其实这个是我自己对WAV头文件没有理解对,应该早就解决了的。看图WAV文件头信息由大小44个字节的数据组成:4字节数据,内容为“RIFF”,表示资源交换文件标识4字节数据,内容为一个整数,表示从下个地址开始到文件尾的总字节数4字节数据,内容为“WAVE”,表示WAV文件标识4字节数...

Android的5个进程等级

 一、进程:进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。进程是系统进行资源分配和调度的一个独立单位。可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体,是一个“执行中的程序”。不只是程序的代码,还包括当前的活动。二、线程:线程是进程的一个实体,是CPU调度和...

[摘]Android音频焦点处理

概要Android系统允许多个应用同时播放音频,这种特性有利有弊。例如当我们正在听音乐的时候突然点开了一个视频,如果我们发现音乐的声音和视频的的声音混合了在一起,这显然让我们非常不爽。而如果我们在播放音乐的时候,突然来了一条信息,这个时候,我们既希望能听到短信的提示音,又不希望音乐此刻停止,而是...