前言
简单整理一下List的集合的排序,简单的记录一下,方便自己后续查阅。
正文
这里介绍一下使用Comparable和Comparator进行排序
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());
参考文章
-
《》
-
历史上的今天
暂无评论...
随机推荐
[摘]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系统允许多个应用同时播放音频,这种特性有利有弊。例如当我们正在听音乐的时候突然点开了一个视频,如果我们发现音乐的声音和视频的的声音混合了在一起,这显然让我们非常不爽。而如果我们在播放音乐的时候,突然来了一条信息,这个时候,我们既希望能听到短信的提示音,又不希望音乐此刻停止,而是...