我有3個列表,這樣它們的元素的順序很重要:
排序幾個「關聯性」列出
names: [a, b, c, d]
files: [a-file, b-file, c-file, d-file]
counts: [a-count, b-count, c-count, d-count]
我需要梳理個個字母基礎上,List<String> names
元素。
有人可以解釋我如何做到這一點?
我有3個列表,這樣它們的元素的順序很重要:
排序幾個「關聯性」列出
names: [a, b, c, d]
files: [a-file, b-file, c-file, d-file]
counts: [a-count, b-count, c-count, d-count]
我需要梳理個個字母基礎上,List<String> names
元素。
有人可以解釋我如何做到這一點?
創建一個類來保存的元組:
class NameFileCount {
String name;
File file;
int count;
public NameFileCount(String name, File file, int count) {
...
}
}
然後一羣來自三個列表中的數據到這個類的一個列表:
List<NameFileCount> nfcs = new ArrayList<>();
for (int i = 0; i < names.size(); i++) {
NameFileCount nfc = new NameFileCount(
names.get(i),
files.get(i),
counts.get(i)
);
nfcs.add(nfc);
}
和排序該列表由name
,使用自定義比較器:
Collections.sort(nfcs, new Comparator<NameFileCount>() {
public int compare(NameFileCount x, NameFileCount y) {
return x.name.compareTo(y.name);
}
});
(屬性存取器,空檢查等被省略簡潔)。
或者實現'Comparable
非常感謝,我幫你解決了這個問題。 – sonderlain
使用數據結構而不是「並行列表」。 – millimoose
我的理解是,如果'names'是'[d,c,b,a]',你會希望'files'和'counts'是反向字母順序?我認爲更詳細一些可能會有用,但很可能您正在尋找'比較器''接口,您可以向'List.sort()'提供' –
Thor84no
要詳細說明「毫無好處」的建議 - 數據結構/類。 –