如何在Java中从映射列表中获取所有值?

如何在Java中从映射列表中获取所有值?,java,hashmap,Java,Hashmap,我有一张地图的列表: List(Map(term -> check), Map(term -> base), Map(term -> prof.gaurav), Map(term -> phone), Map(term -> scraper), Map(term -> with), Map(term -> certificate), Map(term -> six), Map(term -> itself)) 我想得到所

我有一张
地图的
列表

List(Map(term -> check), Map(term -> base), Map(term -> prof.gaurav),
     Map(term -> phone), Map(term -> scraper), Map(term -> with),
     Map(term -> certificate), Map(term -> six), Map(term -> itself))
我想得到所有的值,并检查上面的
Map
列表中是否已经存在一个术语

这可以通过迭代
列表
并检查每个映射的值来完成。但我想要更有效的东西和一个班轮

这个问题可能很幼稚,但我不知道如何继续。我是Java新手

预期输出:


列表(check,base,prof.gaurav,phone,scraper,with,certificate,six,本身)
给定
术语
定义要检查其存在性的术语,您可以这样做:

list.stream()
    .flatMap(map -> map.values().stream())
    .anyMatch(value -> value.equals(term));

.anyMatch(…)
替换为
.collect(Collectors.toList())
,您就可以得到您的列表。但是您在前面的问题中指出,您希望检查一个术语是否存在。

如果
术语定义了您希望检查是否存在的术语,您可以这样做:

list.stream()
    .flatMap(map -> map.values().stream())
    .anyMatch(value -> value.equals(term));

.anyMatch(…)
替换为
.collect(Collectors.toList())
,您就可以得到您的列表。但是您在前面的问题中指出,您希望检查是否存在术语。

如果我理解您的问题正确,您希望检查这些术语中是否有包含标记的

// To check if any of them contains
boolean anyContains = list.stream().any(m -> m.contains("term"));
// get string which did not have value
list<String> nonUsedTerms = list.stream
                    .filter(m -> !m.contains(term))
                    .map(m -> m.get(term));
//检查其中是否包含
布尔值anyContains=list.stream().any(m->m.contains(“术语”);
//获取没有值的字符串
list nonUsedTerms=list.stream
.filter(m->!m.contains(术语))
.map(m->m.get(term));

如果我理解您的问题正确,您想检查这些术语是否包含标签

// To check if any of them contains
boolean anyContains = list.stream().any(m -> m.contains("term"));
// get string which did not have value
list<String> nonUsedTerms = list.stream
                    .filter(m -> !m.contains(term))
                    .map(m -> m.get(term));
//检查其中是否包含
布尔值anyContains=list.stream().any(m->m.contains(“术语”);
//获取没有值的字符串
list nonUsedTerms=list.stream
.filter(m->!m.contains(术语))
.map(m->m.get(term));

作为第一步,我们可以将
List[Map(term->check),Map(term->base)]
转换为
Map(term->List[check,base])
然后我们可以使用
Map\getOrDefault
方法提取
List[check,base]

HashMap<String, String> map = new HashMap<>();
map.put("lorem","ipsum");

HashMap<String, String> map1 = new HashMap<>();
map1.put("lorem","dolor");

HashMap<String, String> map2 = new HashMap<>();
map2.put("sit","amet");

HashMap<String, String> map3 = new HashMap<>();
map3.put("sit","consectetur");


List<Map<String,String>> list = Arrays.asList(map, map1, map2, map3);

Map<String, List<String>> result = list.stream().
        flatMap(m -> m.entrySet().stream()).
        collect(
                groupingBy(
                        Map.Entry::getKey,
                        mapping(Map.Entry::getValue, toList())
                )
        ); // {lorem=[ipsum, dolor], sit=[amet, consectetur]}

result.getOrDefault("lorem", Collections.emptyList()); // [ipsum, dolor]
HashMap map=newhashmap();
地图放置(“lorem”、“ipsum”);
HashMap map1=新的HashMap();
map1.put(“lorem”、“dolor”);
HashMap map2=新的HashMap();
map2.put(“sit”、“amet”);
HashMap map3=新的HashMap();
地图3.put(“坐”、“奉献”);
List List=Arrays.asList(map,map1,map2,map3);
映射结果=list.stream()。
flatMap(m->m.entrySet().stream()。
收集(
分组依据(
Map.Entry::getKey,
映射(Map.Entry::getValue,toList())
)
); // {lorem=[ipsum,dolor],sit=[amet,Concertetur]}
result.getOrDefault(“lorem”,Collections.emptyList());//[伊普苏姆,多洛]

作为第一步,我们可以将
List[Map(term->check),Map(term->base)]
转换为
Map(term->List[check,base])
然后我们可以使用
Map\getOrDefault
方法提取
List[check,base]

HashMap<String, String> map = new HashMap<>();
map.put("lorem","ipsum");

HashMap<String, String> map1 = new HashMap<>();
map1.put("lorem","dolor");

HashMap<String, String> map2 = new HashMap<>();
map2.put("sit","amet");

HashMap<String, String> map3 = new HashMap<>();
map3.put("sit","consectetur");


List<Map<String,String>> list = Arrays.asList(map, map1, map2, map3);

Map<String, List<String>> result = list.stream().
        flatMap(m -> m.entrySet().stream()).
        collect(
                groupingBy(
                        Map.Entry::getKey,
                        mapping(Map.Entry::getValue, toList())
                )
        ); // {lorem=[ipsum, dolor], sit=[amet, consectetur]}

result.getOrDefault("lorem", Collections.emptyList()); // [ipsum, dolor]
HashMap map=newhashmap();
地图放置(“lorem”、“ipsum”);
HashMap map1=新的HashMap();
map1.put(“lorem”、“dolor”);
HashMap map2=新的HashMap();
map2.put(“sit”、“amet”);
HashMap map3=新的HashMap();
地图3.put(“坐”、“奉献”);
List List=Arrays.asList(map,map1,map2,map3);
映射结果=list.stream()。
flatMap(m->m.entrySet().stream()。
收集(
分组依据(
Map.Entry::getKey,
映射(Map.Entry::getValue,toList())
)
); // {lorem=[ipsum,dolor],sit=[amet,Concertetur]}
result.getOrDefault(“lorem”,Collections.emptyList());//[伊普苏姆,多洛]

如果每个地图只包含一个条目,为什么要使用地图?以上数据来自cassandra数据库,其中
term
是列名。在这里,每个映射中都有一个条目,因为它引用了表中的每一行。如果每个映射只包含一个条目,为什么要使用映射?以上数据来自cassandra数据库,其中
term
是列名。在这里,每个映射中都有一个条目,因为它引用了表中的每一行。