java 列表中的序号排序,按子列表中的项目对Java List进行排序

[“a”,“one”,3]应该是你班级的实例

class Item{

private String val1;

private String val2;

private int val3;

//getters and setters

}

这样您的列表就是List< Item>.现在您可以使用Collections.sort(list,yourComparator)或者使用Java 8 list.sort(yourComparator).

作为yourComparator,您可以传递实现Comparator接口的类的实例,例如以某种方式

Comparator yourComparator = new Comparator() {

@Override

public int compare(Item o1, Item o2) {

//comapre val2

int result = o1.getVal2().compareTo(o2.getVal2());

if (result != 0) return result;

//if we are here val2 in both objects ware equal (result was 0)

result = Integer.compare(o1.getVal3(), o2.getVal3());

if (result != 0) return result;

return o1.getVal1().compareTo(o2.getVal1());

}

};

但是可能更具可读性且可能更容易的方法是为每个字段创建单独的比较器并将它们组合起来.如果您使用的是Java 8,则代码可能如下所示:

Comparator val1Comparator = Comparator.comparing(Item::getVal1);

Comparator val2Comparator = Comparator.comparing(Item::getVal2);

Comparator val3Comparator = Comparator.comparingInt(Item::getVal3);

list.sort(val2Comparator

.thenComparing(val3Comparator)

.thenComparing(val1Comparator));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值