我得到LinkedHashMap grades = courses.get(choise).getGrades();
我需要将成绩值保存在一个数组/数组列表中。
我能够循环获取值和键
String key = "";
String value = "";
for (Object o : grades.keySet()){
key = o.toString();
value = grades.get(o).toString();
}
并像这样打印它
System.out.println("Grades: " + value);
示例输出为
Grades:[0, 3, 2, 5, 3]
我的目标是将每个年级分开排列在一个数组/列表中。
答案 0 :(得分:4)
您不必担心订单。无论您是从values()
获取keySet()
还是entrySet()
或LinkedHashMap
,其中任何一个的迭代顺序都将根据插入LinkedHashMap
的顺序
将值放入List
很简单:
List<SomeType> grades = new ArrayList<>(grades.values());
当然,要使其正常工作,您必须将LinkedHashMap grades
更改为LinkedHashMap grades<KeyType,SomeType>
。
答案 1 :(得分:1)
首先要处理的是原始类型:
LinkedHashMap grades = courses.get(choise).getGrades();
即使您仅使用?
,您也需要变量类型上的泛型类型:
LinkedHashMap<?, ?> grades = courses.get(choise).getGrades();
但是,如果您知道比?
更具体的类型,则可以使用它-从问题看来,您的键至少是字符串。
然后:
List<String> list =
grades.values().stream()
.map(Object::toString)
.collect(Collectors.toList());
答案 2 :(得分:0)
从网站上找到解决方案。
如果 grades
是一个 LinkedHashMap<String, String>
,下面的代码可以起到作用。
String[] arrayGrades = grades.keySet().toArray(new String[0]);
代码在 JavaVersion.VERSION_1_8
环境中进行了测试。