Java 如果是数组对象,如何读取特定的映射键值

Java 如果是数组对象,如何读取特定的映射键值,java,Java,我有下面的地图结构 {empId=1234, empName=Mike, CDetails=[{"collegeName":"Peters Stanford","collegeLoc":"UK","collegeLoc":"UK"}]} 我需要从上面的地图中读取值collegeLoc 我试过这种方法,它很有效,但是有更好的方法吗 myMap.entrySet().stream().filter(map -> map.getKey().equals("CDetails")).for

我有下面的地图结构

{empId=1234, empName=Mike, CDetails=[{"collegeName":"Peters Stanford","collegeLoc":"UK","collegeLoc":"UK"}]}
我需要从上面的地图中读取值collegeLoc

我试过这种方法,它很有效,但是有更好的方法吗

    myMap.entrySet().stream().filter(map -> map.getKey().equals("CDetails")).forEach(e -> {

            List<Object> objsList = (List<Object>) e.getValue();

            for(int i=0;i<objsList.size();i++)
            {
                HashMap<String,String> ltr = (HashMap<String, String>) objsList.get(i);

                System.out.println(ltr.get("collegeLoc"));
            }



        });
myMap.entrySet().stream().filter(map->map.getKey().equals(“CDetails”).forEach(e->{
List objsList=(List)e.getValue();

for(int i=0;i
CDetails
是一个
列表
,而不是
映射

试试这个:

empMap.entrySet().stream()
  .map(map -> map.get("CDetails"))
  .filter(Objects::nonNull)
  .flatMap(List::stream)
  .map(element -> ((Map)element).get("collegeLoc"))
  .filter(Objects::nonNull)
  .forEach(System.out::println);

映射到
CDetails
的值是一个列表,但您正在将其强制转换为
HashMap
。您必须先将其强制转换为列表,然后循环遍历该列表的元素(并将每个元素强制转换为一个映射)@Lavanya我更正了几个错误,但您没有提供足够的详细信息让我做更多的工作。