Java 如何将LinkedHasMap值按正确顺序转换为ArrayList/Array?

Java 如何将LinkedHasMap值按正确顺序转换为ArrayList/Array?,java,arraylist,collections,hashmap,linkedhashmap,Java,Arraylist,Collections,Hashmap,Linkedhashmap,我得到LinkedHashMap grades=courses.get(choise.getGrades() 我需要将等级值保存在数组/arraylist中 我能够在循环中获取值和键 String key = ""; String value = ""; for (Object o : grades.keySet()){ key = o.toString(); value = grades.get(o).toString(); } 然后像这样打印出来 System.out.printl

我得到
LinkedHashMap grades=courses.get(choise.getGrades()

我需要将等级值保存在数组/arraylist中

我能够在循环中获取值和键

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 grades = courses.get(choise).getGrades();
您需要变量类型上的泛型类型,即使您只是使用

LinkedHashMap<?, ?> grades = courses.get(choise).getGrades();

你不必担心订单。无论您是从
LinkedHashMap
获取
values()
还是
keySet()
还是
entrySet()
,它们中任何一个的迭代顺序都将根据插入
LinkedHashMap
的顺序

将值放入
列表中非常简单:

List<SomeType> grades = new ArrayList<>(grades.values());
List grades=新的ArrayList(grades.values());

当然,要做到这一点,你必须将
LinkedHashMap等级
更改为
LinkedHashMap等级

从网站上找到解决方案

如果
grades
LinkedHashMap
,那么下面的代码就起作用了


JavaVersion.VERSION\u 1\u 8
环境中测试代码。

调用
list。在列表中添加(值)
?是否?请注意,您不必迭代键集来获取值:如果您希望键和值一起使用,您可以迭代
grades.entrySet()
,如果您只需要值,则可以迭代
grades.values()
。我担心,既然您明确说明了“正确顺序”的含义,我们只能猜测“正确顺序”是
LinkedHashMap
条目的插入顺序。如果我的编辑与您的意图相冲突,那么我很抱歉,可以随意还原,但对我来说这听起来很奇怪。我的原始地图在课程课上,是
私人LinkedHashMap成绩它是用来存储学生成绩的,所以它包含学生对象和他拥有的作为ArrayList的成绩。
List<SomeType> grades = new ArrayList<>(grades.values());
String[] arrayGrades = grades.keySet().toArray(new String[0]);