【问题标题】:Is there any way to get list of values from HashMap contains of ArrayList of HashMaps?有没有办法从 HashMap 中获取 HashMap 的 ArrayList 的值列表?
【发布时间】:2020-04-16 16:14:27
【问题描述】:

我想从我从第三方 API 获得的响应中获取数据传输对象列表。 第三方API的响应结构如下:

Map<String,Object>
{
    {
        String -> ArrayList{
                        <Key,Value(DTO)>,
                        <Key,Value(DTO)>,
                        <Key,Value(DTO)>,
                        ...
                    }
    },

    {
        String -> Hashmap
    }
}

回复类型:Map(String,Object)

我有两个键值对。 1(String,ArrayList (HashMap(s)...)), 2(String,HashMap)

现在我想要 ArrayList 的所有 HashMaps 的值列表。

我希望列表为:

List<DTO>{
    {
        "key":"value",
        "key":"value"
    },
    {
        "key":"value",
        "key":"value",
        "key":"value",
        "key":"value"
    }
}

来自 api 的示例响应:

{ "one": [ 0 : { "id":"435453ty5g8437t5g734tr", "name":"name1", "address":"add", "field":"new field" }, 1: { "id":"4fr74g8fg48346rt83486tf", "name":"name2", "address":"add1", "field":"new field22" } ], 
 "meta": { "current_page":1, "records_per_page":20, "total_records":null } }

我需要什么:

[ { "id":"435453ty5g8437t5g734tr", "name":"name1", "address":"add", "field":"new field" }, 
  { "id":"4fr74g8fg48346rt83486tf", "name":"name2", "address":"add1", "field":"new field22" } ] 

【问题讨论】:

  • 你试过什么?
  • 我不明白你的问题。
  • 能否请您粘贴来自第三方 API 的示例响应以及您需要的示例响应
  • 当您添加有关您的问题的信息时,请编辑您的帖子以添加内容,这次我已经为您完成了

标签: java arrays list arraylist hashmap


【解决方案1】:

你可以:

  1. 过滤值为List 的条目
  2. Object映射到List&lt;Map&lt;String, DTO&gt;&gt;
  3. flatMap 将所有地图放在同一个流中
  4. 全部收集

这是未选中的版本,用于List的泛型

List<Map<String, DTO>> result =
         content.values().stream()
                         .filter(value -> value instanceof List)
                         .map(value -> (List<Map<String, DTO>>) value)
                         .flatMap(List::stream)
                         .collect(Collectors.toList());

System.out.println(result);

&gt; Online Demo

【讨论】:

  • @TrushitShekhda 我不确定你想要的结果,我添加了一个 flatMap 操作以在结果中删除一个 List 级别
猜你喜欢
  • 1970-01-01
  • 2010-10-30
  • 1970-01-01
  • 2012-07-13
  • 1970-01-01
  • 2016-03-08
  • 2020-05-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多