Вы можете сортировать любую коллекцию по желанию с помощью Collections.sort(List<T> list, Comparator<? super T> c)
метод.
Все, что вам нужно сделать, это реализовать способ Comparator's
compare
.
В вашем конкретном случае это бы что-то вроде этого:
List<String> list = Arrays.asList("ST1000", "ST5000", "ST30000", "ST400", "ST500", "SP1000", "SP600");
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
String o1Prefix = o1.substring(0, 2);
String o2Prefix = o2.substring(0, 2);
if (o1Prefix.equals(o2Prefix)) {
return Integer.parseInt(o1.substring(2, o1.length())) > Integer.parseInt(o2.substring(2, o2.length())) ? 1 : -1;
} else if (o1Prefix.equals("ST")) {
return -1;
} else {
return 1;
}
}
});
какие ценности? Какие-то объекты? Не могли бы вы написать код, который вы написали? –
@OlimpiuPOP - Нет, это просто строковые значения! – AngryJS
У моего кода пока нет какой-либо сортировки, если бы это были объекты, я думал об использовании компаратора, но его просто строковые значения :( – AngryJS