java对象数组排序_如何在Java中对对象数组进行排序?
小编典典
你有两种方法可以使用Arrays实用程序类
实现一个Comparator并将数组与比较器一起传递给sort方法,该方法将其作为第二个参数。
在对象所属的类中实现Comparable接口,并将数组传递给仅采用一个参数的sort方法。
例
class Book implements Comparable {
public String name, id, author, publisher;
public Book(String name, String id, String author, String publisher) {
this.name = name;
this.id = id;
this.author = author;
this.publisher = publisher;
}
public String toString() {
return ("(" + name + ", " + id + ", " + author + ", " + publisher + ")");
}
@Override
public int compareTo(Book o) {
// usually toString should not be used,
// instead one of the attributes or more in a comparator chain
return toString().compareTo(o.toString());
}
}
@Test
public void sortBooks() {
Book[] books = {
new Book("foo", "1", "author1", "pub1"),
new Book("bar", "2", "author2", "pub2")
};
// 1. sort using Comparable
Arrays.sort(books);
System.out.println(Arrays.asList(books));
// 2. sort using comparator: sort by id
Arrays.sort(books, new Comparator() {
@Override
public int compare(Book o1, Book o2) {
return o1.id.compareTo(o2.id);
}
});
System.out.println(Arrays.asList(books));
}
输出量
[(bar, 2, author2, pub2), (foo, 1, author1, pub1)]
[(foo, 1, author1, pub1), (bar, 2, author2, pub2)]
2020-03-09
java对象数组排序_如何在Java中对对象数组进行排序?相关推荐
- java 正则表达式 开头_如何在Java中修复表达式的非法开头
java 正则表达式 开头 您是否遇到过这个令人难以置信的错误,想知道如何解决它? 让我们仔细阅读一下,研究如何解决表达式Java非法开头错误. 这是一个动态错误,这意味着编译器会发现某些不符合Jav ...
- java soap 头_如何在Java中添加Soap标头
我有一个来自oracle的NO.net Web服务,要访问,我需要添加soap标头.如何在Java中添加soap标头? Authenticator.setDefault(new ProxyAuthen ...
- java实现递归算法_如何在Java中实现二进制搜索算法而无需递归
java实现递归算法 by javinpaul 由javinpaul 流行的二进制搜索算法的迭代实现,用于在排序数组中查找元素. (An Iterative implementation of the ...
- java tostring格式_如何在Java中使用toString()获得数字的字符串表示形式?
toString()方法中的一个重要方法对象类,它可用于返回一个对象的字符串或文本表示.对象类的toString()方法返回一个字符串,作为指定对象类的名称,后跟" @ "符号和对 ...
- java插入图片_如何在java窗体程序中添加图片
打开eclipse,创建一个java工程项目,创建完后在src下新建一个类Window,由于要插入图片,所以还在工程目录下创建一个文件夹imgs,里面放了一张60*60的图片,创建后的工程目录和图片, ...
- java安卓计时器_如何在android中设置计时器
通过java.util.Timer和java.util.TimerTask使用计时器的标准Java方法在Android中运行良好,但是你应该知道这个方法创建了一个新线程. 您可以考虑使用非常方便的Ha ...
- java jcombobox长度_如何在JToolBar中设定JComboBox的大小?
如何在JToolBar中设定JComboBox的大小? 我设计了一个JToolBar,并且在上边添加了一个JComboBox,可是我发现这个JComboBox长度无法控制,它将JToolBar上剩余空 ...
- java redis 缓存_如何在 Java 中实现一个 redis 缓存服务
缓存服务的意义 为什么要使用缓存?说到底是为了提高系统的运行速度.将用户频繁访问的内容存放在离用户最近,访问速度最快的地方,提高用户的响应速度.一个 web 应用的简单结构如下图. web 应用典型架 ...
- java 子类化_如何在Java中安全地进行子类型化
你可能还记得,Liskov Substitution原则是关于承诺和合同的.但究竟是什么承诺?这是关于保证子类型的安全性.这意味着子类型必须保证有人可以从超类型中合理地推断出来.它必须具有传递关系.在 ...
最新文章
- bootstrap跟vue冲突吗_知道微服务,但你知道微前端吗?
- WPF:WPF显示PDF文档 之 编译 MoonPdfLib库
- 自己服务器上部署APP应用(安卓和IOS版),下载页面的代码,以及IOS的xxx.plist文件的建立
- Oracle中查看最近被修改过的表的方法
- usb4-配置usb触摸屏
- 【python 8】python 装饰器
- cobbler基础安装
- .NET Core + Spring Cloud:服务注册与发现
- ajax提交数据被截断的问题
- 老李推荐: 第3章2节《MonkeyRunner源码剖析》脚本编写示例: MonkeyDevice API使用示例 1...
- python做些什么项目内容_现在比较流行的python做什么项目最适合?
- 记录centos7下tomcat部署war包过程
- Linux电源管理-Suspend/Resume流程
- JMF实现对USB视频数据捕捉和应用
- 文件夹加密软件排行榜
- SilverLight:”无法启动调试--未安装 Silverlight Developer 运行时。请安装一个匹配版本”的解决方案。
- Java词法分析器的设计与实现
- 谷歌支付服务端服务账号订单校验
- python 取整求余函数
- 李白打酒*C语言简易版(递归)
热门文章
- win2003服务器服务正在运行,win2003提示“在系统启动时至少有一个服务或驱动程序产生错误”Windows服务器操作系统 -电脑资料...
- 【Go】学生教务管理系统【无界面 / 单机版】(一)
- Jsoup Cookie登录处理
- ajax请求参数datatype,ajax datatype参数会遇到什么问题?
- nginx 代理tcp长连接短连接配置
- SSE:使用HTTP做服务端数据推送的技术及其他通信技术
- clickonce 部署能cs程序_配置 ClickOnce 信任提示行为 - Visual Studio | Microsoft Docs
- java 路径拼接_Html图片路径拼接参数实现打印导出
- SWT/JFACE表格Table可编辑
- APP开发外包注意事项有哪些?