Сортировка строк в списке на основе индексов - PullRequest
0 голосов
/ 06 апреля 2019

Если у меня есть ArrayList строк ["bb", "ab", "cf", "aa"] как можно отсортировать по алфавиту по 1-му или n-му индексу и далее (если 1-й индекс - это тот же символ для других строк)? Есть ли способ, который я могу использовать для этого?

Список выше, я бы ожидал для индекса = 1

["aa", "bb", "ab", "cf"]

Другой пример будет

["bab", "baa", "abbe", "cff"] вернется

["baa", "bab", "abbe", "cff"]

Ответы [ 2 ]

1 голос
/ 06 апреля 2019

Вы можете использовать Comparator.comparingInt для выполнения этой сортировки:

Использование индекса 0 для сортировки массивов:

String[] s = {"bb", "ab", "cf", "aa"};
Arrays.sort(s, Comparator.comparingInt(s1 -> s1.charAt(0)));
Arrays.asList(s).forEach(System.out::println);

или сортировка списков:

List<String> s = Arrays.asList("bb", "ab", "cf", "aa");
s.sort(Comparator.comparingInt(s2 -> s2.charAt(0)));
s.forEach(System.out::println);

Выходы:

ab
aa
bb
cf

В противном случае используйте индекс 1 для массивов сортировки:

String[] s = {"bb", "ab", "cf", "aa"};
Arrays.sort(s, Comparator.comparingInt(s2 -> s2.charAt(1)));
Arrays.asList(s).forEach(System.out::println);

или индекс 1 для сортировки списков

List<String> s = Arrays.asList("bb", "ab", "cf", "aa");  
s.sort(Comparator.comparingInt(s2 -> s2.charAt(1)));
s.forEach(System.out::println);

Выходы:

aa
bb
ab
cf

PS: Вы спрашиваете о java, но ваши strings и array, как javascript ..

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

Взгляните на этот простой пример:

 public static void main(String[] args) {
        List<String> listOfStrings = new LinkedList<>();
        listOfStrings.add("aa");
        listOfStrings.add("bb");
        listOfStrings.add("ge");
        listOfStrings.add("be");
        System.out.println(Arrays.asList(listOfStrings));
        String getMe = listOfStrings.remove(3);
        listOfStrings.add(0, getMe);
        System.out.println(Arrays.asList(listOfStrings));
    }

LinkedList подходит для вставки и удаления элементов, и это можно сделать в O(1) (изменить его локально), также я хотел бы отметить, что добавление или удаление заголовка списка выполняется также в O(1) который оптимален для вашего дела.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...