Java/Stream帮助:仅使用streams将嵌套的映射列表转换为映射
我有一个嵌套的地图列表,如下所示
地图示例列表:
[{owner=trader1, ord_id=[ord1, ord2], watchlist=trader1_WL}, {owner=trader2, ord_id=[ord3, ord4], watchlist=trader2_WL}]
我需要把它转换成ord_id:owner的地图
所需输出:
{ord1:trader1, ord2:trader1, ord3:trader2, ord4.trader2}
示例代码:[不工作,因为ord_id有项目列表]
import java.util.*;
import java.util.stream.Collectors;
public class Main
{
public static void main (String[]args)
{
Map < String, Object > order1 = new HashMap <> ();
order1.put ("ord_id", Arrays.asList ("ord1", "ord2"));
order1.put ("owner", "trader1");
order1.put ("watchlist", "trader1_WL");
Map < String, Object > order2 = new HashMap <> ();
order2.put ("ord_id", Arrays.asList ("ord3", "ord4"));
order2.put ("owner", "trader2");
order2.put ("watchlist", "trader2_WL");
List < Map < String, Object >> open_order_list = new ArrayList <> ();
open_order_list.add (order1);
open_order_list.add (order2);
System.out.println (open_order_list);
Map < String, String > result =
open_order_list.stream ().collect (Collectors.
toMap (s->(String) s.get ("ord_id"),
s->(String) s.get ("owner")));
System.out.println (result);
}
}
# 1 楼答案
这很难看,但你可以这样做:
如果您将JSON文本解析为POJO,而不是通用的集合对象,那么代码会更好