Java: Как отсортировать ArrayList в алфавитном порядке с учетом регистра и с любым числом строк в конце - PullRequest
1 голос
/ 06 апреля 2020

Я хотел бы отсортировать мой ArrayList по алфавиту (без учета регистра), но иметь любое число строк (например, "1999") в конце списка. Возьмите следующий код, например:

ArrayList<String> names = new ArrayList<>();
names.add("abby");
names.add("Abigail");
names.add("Dylan");
names.add("becky");
names.add("011");

Как бы я выглядел так:

["abby", "Abigail", "becky", "Dylan", "011"]

Я собирался использовать следующий код:

Collections.sort(list, String.CASE_INSENSITIVE_ORDER);

Хотя это сортирует число в начале ArrayList. Любые идеи о том, что было бы самым простым способом go об этом? Спасибо!

1 Ответ

0 голосов
/ 06 апреля 2020

Композиция

Создайте свой собственный компаратор . Сначала проверьте цифры, затем используйте String.CASE_INSENSITIVE_ORDER.

public class MyStringComparator implements Comparator<String> {
  public int compareTo(String a, String b) {
    //if both a and b are digits, maybe use String.CASE_INSENSITIVE_ORDER?
    //if a is all digits return -1
    //if b is all digits return 1
    return String.CASE_INSENSTIVE_ORDER(a,b);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...