有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我得到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]

我的目标是让每个年级在一个数组/列表中分开


共 (3) 个答案

  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. # 2 楼答案

    从网站上找到了解决方案

    如果grades是一个LinkedHashMap<String, String>,下面的代码就可以实现这一点

    String[] arrayGrades = grades.keySet().toArray(new String[0]);
    

    代码在JavaVersion.VERSION_1_8环境中进行了测试

  3. # 3 楼答案

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

    将值放入List中非常简单:

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

    当然,要做到这一点,你必须将LinkedHashMap grades改为LinkedHashMap grades<KeyType,SomeType>