我有一個HashMap,我已經對類別進行了排序,並將它放在一個列表中,即最初的類別是: - A,B,C,D,排序後是D, C,B,A和我已將它添加到列表中。Java:在hashmap中顯示基於排序鍵的值
我想基於排序的類別順序顯示問題,例如 顯示包含類別的所有問題: - D 然後顯示包含類別的所有問題: - C等等。
這裏是我已經試過: -
List<Category> list = Arrays.asList(Category.values());
List<Question> list1 = new ArrayList<>();
list1.addAll(questionList);
Collections.sort(list, new Comparator<Category>() {
@Override
public int compare(Category o1, Category o2) {
return o2.ordinal() - o1.ordinal();
}
});
System.out.println("Categories" +list);
Map< List<Category>,List<Question>> map = new HashMap<>();
map.put(list, list1);}}
boolean ty = list1.containsAll(list1);
if(ty==true){
out.println(list1.get(0).getQuestion()) ;}
我希望我的輸出是這樣的: -
d:你叫什麼名字? 你好嗎?
C:另一個問題1? 另一個問題2?
乙:另一個問題3? 另一個問題4?
它看起來像你需要一個'LinkedHashMap的<類別,列出>',而不是'的HashMap <列表,列表>'。這是因爲與'LinkedHashMap'不同,'HashMap'沒有排序,您還需要使用單個類別作爲關鍵字,而不是整個類別列表作爲單個關鍵點,但是如果您想按特定順序訪問問題,我不確定「Map」是建模數據的好方法。 –
Titus
我不明白你選擇的地圖類型。爲什麼選擇一個類別列表而不僅僅是一個類別作爲你的關鍵? –
您發佈的代碼與您描述的目標沒有任何關係。確實,你應該用代碼發佈你的問題,但它應該是*嘗試解決你的問題*。發佈的代碼執行以下操作:•將預定義的'Category'常量列表創建爲'list',*將'questionList'的副本創建爲'list1',*將list排序到它現有的順序, •創建一個奇怪類型的Map,•比較'list1'和它自己,*如果'true == true',打印'list1.get(0).getQuestion()'。所以整個代碼可以縮短爲'out.println(questionList.get(0).getQuestion());'... – Holger