【问题标题】:how to iterate a List that contains Map and get the key and value of that map如何迭代包含 Map 的 List 并获取该映射的键和值
【发布时间】:2017-11-15 11:24:37
【问题描述】:

我有一个list,其中包含一个关于类类型的映射。我想迭代 list 并获得内部映射的 keyvalues

这里是List

quotationList =  quotationService.searchByIdList(accountId, Account.class);

它包含一个索引,即在 0 索引处它包含一张地图。我需要获取该地图的键和值。

我的尝试:

for (int i = 0; i < quotationList.size(); i++) {
            Map myMap = (Map) quotationList.get(i);
            System.out.println("Data For Map" + i);
            for (Entry<String, Object> entrySet : ((Map<String, Object>) myMap).entrySet()) {
                System.out.println("Key = " + entrySet.getKey() + " , Value = " + entrySet.getValue());
            }
        }

【问题讨论】:

  • for(int i=0;i entrySet : ((Map) myMap).entrySet()) { System.out.println("Key = " + entrySet.getKey() + " , Value = " + entrySet.getValue());将对象转换为地图时出错
  • 在初始化 List 时给出 List 的类型,例如: List> quoteList = new ArrayList>();然后在quotationsList.get(i) 中正确地把它打回原处。否则你的逻辑似乎是正确的:)
  • quotationList 的声明是什么,为什么需要Map 演员表?你尝试有什么问题?请提供minimal reproducible example,显示列表声明,插入该列表的数据示例,...
  • 它给了我一个类转换异常,com.mycaptionlabs.domain.user.Account 不能转换为 java.util.Map
  • 您在该List 中有一个Account 实例,而不是Map。这就是为什么向我们提供所有信息很重要的原因。您希望获取和打印的Map 是什么? PS:请edit提供该信息的问题。

标签: java list dictionary


【解决方案1】:

获取列表中的第一项:

Map<MyKey, MyValue> myMap = quotationList.get(0);

要获取地图的值:

myMap.entrySet();

下一步是循环该 entrySet:

    for (Entry<MyKey, MyValue> entry : myMap.entrySet()) {
        MyKey key = entry.getKey();
        MyValue value = entry.getValue();
    }

【讨论】:

  • 我已经尝试过这种类似的方法。但不工作。将对象转换为地图时出现异常。
  • 那你没有List&lt;Map&gt;
【解决方案2】:

Java 8:如果你的地图是 Map&lt;String, String&gt; 那么

quotationList.forEach(item -> item.entrySet().forEach(entry -> {
        String key = entry.getKey();
        String value = entry.getValue();
    }));

【讨论】:

  • 那么可能是quotationList不包含Map
  • 它包含,因为,如果我把它放到地图上并将它传递给前端,它会显示所有值
  • 你怎么这么肯定,你能不能试着把这个放在你的代码上 System.out.println(quotationList.get(0) instanceof Map);
【解决方案3】:

如果列表包含元素,那么您的代码应该打印地图的内容。

这是您的代码在列表中有一个地图元素,它正在打印地图的内容:

List> quoteList= new ArrayList>();

    Map<String, Object> map= new HashMap<String, Object>();
    map.put("key1", "value1");

    quotationList.add(map);

    for (int i = 0; i < quotationList.size(); i++) {
        Map myMap = (Map) quotationList.get(i);
        System.out.println("Data For Map" + i);
        for (Entry<String, Object> entrySet : ((Map<String, Object>) myMap).entrySet()) {
            System.out.println("Key = " + entrySet.getKey() + " , Value = " + entrySet.getValue());
        }
    }

它将产生如下输出:

地图0的数据 键=键1,值=值1

【讨论】:

  • 它在大多数情况下都可以正常工作,但如果它包含模型的实例,则不是。
猜你喜欢
  • 2018-06-19
  • 1970-01-01
  • 2019-03-12
  • 2021-02-08
  • 2011-10-04
  • 2012-02-26
  • 1970-01-01
  • 1970-01-01
  • 2019-08-12
相关资源
最近更新 更多