Вот как это сделать в Plain Java:
public int compare(TestData o1, TestData o2) {
int result = o1.getActivation().compareTo(o2.getActivation()));
if(result==0) result = o1.getTimeStamp().compareTo(o2.getTimeStamp());
return result;
}
Или с Гуава (используя ComparisonChain
):
public int compare(TestData o1, TestData o2) {
return ComparisonChain.start()
.compare(o1.getActivation(), o2.getActivation())
.compare(o1.getTimeStamp(), o2.getTimeStamp())
.result();
}
Или с Commons / Lang (используя CompareToBuilder
):
public int compare(TestData o1, TestData o2) {
return new CompareToBuilder()
.append(o1.getActivation(), o2.getActivation())
.append(o1.getTimeStamp(), o2.getTimeStamp())
.toComparison();
}
(Все три версии эквивалентны, но простая версия Java является наиболееподробный и, следовательно, наиболее подверженный ошибкам. Все три решения предполагают, что оба o1.getActivation()
и o1.getTimestamp()
реализуют Comparable
).