Реализуйте пользовательский Comparator
, используя метод compare(a,b)
, подобный следующему:
Обычная Ява:
public int compare(YourObject o1, YourObject o2) {
int result = o1.getProperty1().compareTo(o2.getProperty1()));
if(result==0) result = o1.getProperty2().compareTo(o2.getProperty2());
return result;
}
С Гуава (с использованием ComparisonChain
):
public int compare(YourObject o1, YourObject o2) {
return ComparisonChain.start()
.compare(o1.getProperty1(), o2.getProperty1())
.compare(o1.getProperty2(), o2.getProperty2())
.result();
}
С Commons / Lang (с использованием CompareToBuilder
):
public int compare(YourObject o1, YourObject o2) {
return new CompareToBuilder()
.append(o1.getProperty1(), o2.getProperty1())
.append(o1.getProperty2(), o2.getProperty2())
.toComparison();
}
(Все три версии эквивалентны, но простая версия Java является наиболее многословной и, следовательно, наиболее подверженной ошибкам. Все три решения предполагают, что и o1.getProperty1()
, и o1.getProperty2()
реализуют Comparable
).
(взято из моего предыдущего ответа )
сейчас делаем Collections.sort(yourList, yourComparator)