[“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));