Используйте Collections.sort
со следующим компаратором:
Collections.sort(zerns, new Comparator<Zern>() {
@Override
public int compare(Zern z1, Zern z2) {
if (z1.getcostA() == z2.getcostA()) {
return z1.getcostB() == z2.getcostB() ? 0 :
z1.getcostB() < z2.getcostB() ? -1 : 1;
} else {
return z1.getcostA() < z2.getcostA() ? -1 : 1;
}
}
});
Обновление: Если вам не нужен индексированный доступ к вашим элементам, вы можете использовать реализацию отсортированного набора с первого места с пользовательским компаратором:
TreeSet<Zern> zerns = new TreeSet<Zern>(new Comparator<Zern>() {
@Override
public int compare(Zern z1, Zern z2) {
if (z1.getcostA() == z2.getcostA()) {
return z1.getcostB() == z2.getcostB() ? 0 :
z1.getcostB() < z2.getcostB() ? -1 : 1;
} else {
return z1.getcostA() < z2.getcostA() ? -1 : 1;
}
}
});
Теперь можно добавлять объекты, и ваш набор всегда будет сортирован (примечание: я добавил конструктор и toString в ваш класс Zern):
zerns.add(new Zern(10, 26));
System.out.println(zerns); // => [(10,26)]
zerns.add(new Zern(22, 19));
System.out.println(zerns); // => [(10,26), (22,19)]
zerns.add(new Zern(22, 17));
System.out.println(zerns); // => [(10,26), (22,17), (22,19)]
zerns.add(new Zern(15, 12));
System.out.println(zerns); // => [(10,26), (15,12), (22,17), (22,19)]
Вы можете удалить предмет
zerns.remove(new Zern(22, 17));
System.out.println(zerns); // => [(10,26), (15,12), (22,19)]
или удалите наихудшую статью стоимости
zerns.remove(zerns.last());
System.out.println(zerns); // => [(10,26), (15,12)]
или получите лучшую по стоимости вещь через
System.out.println(zerns.first()); // => (10,26)