Коллекции Java: сортировка списка значений по отдельному списку ключей - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть два списка.Каждый ключ в списке ключей соответствует значению в списке значений.Предполагается, что два списка имеют одинаковый размер.Мне нужно отсортировать оба списка на основе списка ключей.

Я попробовал следующее, но, очевидно, это не сработало бы, так как могло бы испортить ассоциации ключ-значение.Я просто понятия не имею, что еще делать, кроме написания собственной реализации сортировки.

// Would mess up the key-value associations
    public void sort() {
        Collections.sort(this.keys);
        Collections.sort(this.values);
    }

    /* Example: 
        this.keys = (2, 1, 4)
        this.values = ("value for 2", "value for 1", "value for 4")
        this.sort()
        this.keys = (1, 2, 4)
        this.values = ("value for 1", "value for 2", "value for 4") */

Есть ли простой способ сделать это?Я бы предпочел придерживаться встроенных функций сортировки, а не писать свои собственные.Также я не могу изменить базовые структуры данных.

1 Ответ

0 голосов
/ 24 февраля 2019

Если, как вы говорите, вам нужно сохранить оба списка, вы можете попробовать что-то вроде следующего:

// Create a map that orders its data.
Map<Integer, String> tmp = new TreeMap<>();

// Put your data into this structure and let it sort the data for you.
for (int i=0; i<keys.size(); i++) {
    tmp.put(keys.get(i), values.get(i));
}

// Clear your original lists.
keys.clear()
values.clear();

// Put the data back into your lists - but sorted this time.
for (Integer key : tmp.keySet()) {
    keys.add(key);
    values.add(tmp.get(key));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...