Сортировать LinkedHashMap по ключу и преобразовать в список в Android - PullRequest
1 голос
/ 26 апреля 2020

У меня есть HashMap, как показано ниже:

{ 1 = "", 0 = Ecrivez, 2 = Hello }

Я хочу преобразовать его в ArrayList, отсортированный по ключу так:

Ecrivez, "", Hello

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

List sortedKeys = new ArrayList(testhmap.values());
Collections.sort(sortedKeys);

Ответы [ 2 ]

2 голосов
/ 26 апреля 2020

Я вижу два способа сделать это:

// Using TreeMap (Java 1.2+)
List<String> list = new ArrayList<>(new TreeMap<>(map).values());
// Using Stream (Java 8+)
List<String> list = map.entrySet().stream().sorted(Entry.comparingByKey())
                    .map(Entry::getValue).collect(Collectors.toList());

Оба из приведенных выше превратят карту {1=, 0=Ecrivez, 2=Hello} в список [Ecrivez, , Hello]

См. Этот код запустить в прямом эфире на IdeOne.com .

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

Это то, что вы ожидаете?

public static void main(String[] args) {
    HashMap<Integer, String> hashMap = new LinkedHashMap<>();
    hashMap.put(1, "");
    hashMap.put(0, "Ecrivez");
    hashMap.put(2, "Hello");

    System.out.println("Before sort: " + hashMap.values());
    List<String> list = hashMap.keySet().stream().sorted().map(key -> hashMap.get(key))
        .collect(Collectors.toList());
    System.out.println("After sort: " + list);
  }

Вывод, как показано ниже:

Before sort: [, Ecrivez, Hello]
After sort: [Ecrivez, , Hello]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...