我有一个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