java - 如何通过具有自己的比较器的类字段进行排序?
问题描述
我有一个示例类,说Country
:
class Country {
public String name;
public int population;
public Flag flag;
...
}
我在Flag
其他地方定义了这个类
class Flag {
String id;
int pixel;
...
}
现在我创建了一个单独的比较器 DefaultFlagRankingComparator(),它可以按 id 对标志进行排序。如何使用此 DefaultFlagRankingComparator() 按标志 ID 对国家/地区列表进行排序?
解决方案
您可以调用Comparator
每个国家/地区的标志字段的比较方法。
DefaultFlagRankingComparator flagComparator =
new DefaultFlagRankingComparator();
Collections.sort(countries, (a, b) ->
flagComparator.compare(a.getFlag(), b.getFlag()));
您还可以使用密钥提取功能和比较这些密钥的 aComparator.comparing
创建一个(如Louis Wasserman所建议的)。Comparator
Comparator
DefaultFlagRankingComparator flagComparator =
new DefaultFlagRankingComparator();
Collections.sort(countries,
Comparator.comparing(Country::getFlag, flagComparator));
推荐阅读
- android - 以编程方式跟踪android中的图像
- python - 夸脱 JSON 编码
- python - 如何在 pandas 中使用 read_excel 提高处理速度?
- rust - 概括添加无符号和有符号整数类型
- ios - 试图删除 backBarButtonItem 的标题
- python - Django Channels 测试失败
- android - android - 从用户的图库中保存图片
- vue.js - 在 Vue 页面中嵌入 mapbox-gl 对象?
- python - 想要在 PDF 文档中保存多个绘图
- java - Mapstructs 在 MapperImpl 中生成错误代码