我正在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]
我的目标是将每个年级分隔在一个数组/列表中。
您不必担心顺序。无论您是从LinkedHashMap
获得values()
还是keySet()
或entrySet()
,其中任何一个的迭代顺序都将根据插入LinkedHashMap
的顺序。
将值放入List
非常简单,如下所示:
List<SomeType> grades = new ArrayList<>(grades.values());
当然,要做到这一点,您必须将LinkedHashMap grades
更改为 LinkedHashMap grades<KeyType,SomeType>
.
首先要整理的是原始类型:
LinkedHashMap grades = courses.get(choise).getGrades();
您需要变量类型上的泛型类型,即使您只使用 ?
:
LinkedHashMap<?, ?> grades = courses.get(choise).getGrades();
但是如果你知道比?
更具体的类型,你可以使用它 - 从问题来看,你的键至少是字符串。
然后:
List<String> list =
grades.values().stream()
.map(Object::toString)
.collect(Collectors.toList());
从网站上找到解决方案。
如果提供grades
是LinkedHashMap<String, String>
,则以下代码可以解决问题。
String[] arrayGrades = grades.keySet().toArray(new String[0]);
代码在JavaVersion.VERSION_1_8
环境中进行了测试。