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]);