список сортировки java android - PullRequest
0 голосов
/ 23 октября 2019

Привет, я хочу отсортировать список по адресу (полный адрес). Список может быть, например:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...