У меня есть Java ArrayList, содержащий некоторые объекты типа ObjType.
Допустим, у объекта есть два поля:
- A логическое поле isManual ()
- A double значение getAffinity ()
Я пытаюсь заказать этот ArrayList на основе более чем одного критерия:
Прежде всего, все объекты с isManual = true в том же порядке, в котором они уже есть в ArrayList
-Тогда мне нужны все объекты с isManual = false, упорядоченные getAffinityValue (от самого низкого до самого большого)
Я пришел с этим кодом, который не работает (кажется, что он сортируется случайным образом):
Collections.sort(coda, new Comparator<ObjType>() {
public int compare(ObjType a, ObjType b) {
boolean b1=a.isManual();
boolean b2=b.isManual();
if(b1 && b2) {
if (a.getAffinity() < b.getAffinity()) return 1;
if (a.getAffinity() > b.getAffinity()) return -1;
return 0;
}
if (b1) return -1;
if (b2) return 1;
if (a.getAffinity() < b.getAffinity()) return 1;
if (a.getAffinity() > b.getAffinity()) return -1;
return 0;
}
}
Есть предложения? Большое спасибо!