首页 > 解决方案 > 如何对集合中的子字符串进行排序?

问题描述

我如何按年份然后按 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 不适用于子字符串。

标签: javaarraysarraylist

解决方案


Collections.sort可以获取Comparator作为第二个参数的实例。您可以在其中Comparator放置任何代码来比较两个列表的项目。

例如将按and排序spznyeargetBcItem

    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因为列表可以包含空值


推荐阅读