java - 如何对集合中的子字符串进行排序?
问题描述
我如何按年份然后按 bc 排序?
List<String> spzn = new ArrayList<String>;
for(final CcaesItem item : items) { //Items is List<CcaesItem>
Long bc = item.getBcItem();
Long year = item.getYear();
String type = item.getType();
spzn.add(type + " " + bc + "/" + year);
}
Collection.sort(spzn);
我有使用子字符串的想法,但 collection.sort 不适用于子字符串。
解决方案
Collections.sort
可以获取Comparator
作为第二个参数的实例。您可以在其中Comparator
放置任何代码来比较两个列表的项目。
例如将按and排序spzn
:year
getBcItem
Collections.sort(spzn, new Comparator() {
@Override
public int compare(CcaesItem o1, CcaesItem o2) {
if (o1.getYear() > o2.getYear()) {
return 1;
} else if (o1.getYear() < o2.getYear()) {
return -1;
} else {
if (o1.getBcItem() > o2.getBcItem()) {
return 1;
} else if (o1.getBcItem() < o2.getBcItem()) {
return -1;
}
}
return 0;
}
});
也不要忘记空检查,Comparator
因为列表可以包含空值
推荐阅读
- php - 将此作为维度数组
- c# - 如何只对一个对象使用属于两个对象的一个函数?
- python - Python pyplot 图例散点图
- typescript - 如何扩展DefinitelyTyped社区定义的函数声明?
- swift - Swift 数字格式器货币问题
- sql-server - SQL Server:添加具有相同列的行/表
- python - 如何在一定时间后使文本消失?
- android - 使用 startActivityForResult 时 AutocompleteActivity 抛出 IllegalStateException
- javascript - 使用输入字段中的值,其中值是返回表单 JS
- android - Dialog Fragment 和 RecycleView