当Java流中存在Map列表时,如何使用平面Map将HashMap键值平面化为一个集合

vwhgwdsa  于 2023-04-10  发布在  Java
关注(0)|答案(1)|浏览(161)
List<Map<String, Object>> list =new ArrayList();
Map<String, Object> map1 =new HashMap();
List<String> values =new ArrayList();
values.add("TEST")
values.add("TEST1")
map1.put("level",values);
Map<String, Object> map2 =new HashMap();
List<String> values2 =new ArrayList();
values2.add("TEST2")
values2.add("TEST3")
map2.put("level",values2);
list.add(map1);
list.add(map2);

我想要的结果就像一个平面字符串值的列表

List<String> values =["TEST","TEST1","TES2","TEST3"]
wwtsj6pe

wwtsj6pe1#

List<Object> collect = list
                .stream()
                .flatMap(x -> x.entrySet().stream())
                .map(Map.Entry::getValue)
                .flatMap(x -> {
                            if (x instanceof Collection<?>) {
                                return ((Collection<?>) x).stream();
                            } else {
                                return Stream.of(x);
                            }
                        }
                )
                .collect(Collectors.toList());

相关问题