我有兩個清單。鍵列表中的每個鍵對應(yīng)于值列表中的一個值。假設(shè)這兩個列表大小相同。我需要根據(jù)鍵列表對兩個列表進行排序。我嘗試了以下方法,但顯然它不起作用,因為它會弄亂鍵值關(guān)聯(lián)。除了編寫自己的排序?qū)崿F(xiàn)之外,我只是不知道還能做什么。// 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") */有沒有一種簡單的方法可以做到這一點?我寧愿堅持使用內(nèi)置的排序功能,而不是自己編寫。我也不能改變底層的數(shù)據(jù)結(jié)構(gòu)。
1 回答

心有法竹
TA貢獻1866條經(jīng)驗 獲得超5個贊
如果如您所說,您需要保留兩個列表,則可以嘗試以下操作:
// 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));
}
添加回答
舉報
0/150
提交
取消