Привет, я хочу отсортировать список по адресу (полный адрес). Список может быть, например:
city, street 11
city, street 1
city, street 2
city, street 1a
Но у меня есть адрес в объекте, и этот объект у меня есть в другом объекте, он выглядит так:
public class RelationshipsOrderAndBins {
public RowEntity order;
public List<LoadingRow> bins;
}
адрес, который у меня есть в RowEntity
Я пытаюсь сделать это:
public static Comparator<RelationshipsOrderAndBins> COMPARE_BY_ADDRESS = new Comparator<RelationshipsOrderAndBins>() {
public int compare(RelationshipsOrderAndBins one, RelationshipsOrderAndBins other) {
Collator usCollator = Collator.getInstance(Locale.getDefault()); //Your locale here
usCollator.setStrength(Collator.PRIMARY);
String o1StringPart = one.getOrder().getAddress().toLowerCase().replaceAll("\\d", "");
String o2StringPart = other.getOrder().getAddress().toLowerCase().replaceAll("\\d", "");
if (o1StringPart.contains("/")) {
o1StringPart = o1StringPart.substring(0, o1StringPart.indexOf("/"));
}
if (o2StringPart.contains("/")) {
o2StringPart = o2StringPart.substring(0, o2StringPart.indexOf("/"));
}
if (o1StringPart.equalsIgnoreCase(o2StringPart)) {
return extractInt(one.getOrder().getAddress().toLowerCase()) - extractInt(other.getOrder().getAddress().toLowerCase());
}
return usCollator.compare(one.getOrder().getAddress().toLowerCase(), other.getOrder().getAddress().toLowerCase());
}
int extractInt(String s) {
if (s.contains("/")) {
s = s.substring(0, s.indexOf("/"));
}
String num = s.replaceAll("\\D", "");
return num.isEmpty() ? 0 : Integer.parseInt(num);
}
};
, но это не работает. Эта функция не сортирует мой список. У меня есть тот же список после сортировки.
Я хочу отсортировать мой список как:
city, street 1
city, street 1a
city, street 2
city, street 11