【问题标题】:List<Map<String, String>> contains all elements from String[]. How to check it?List<Map<String, String>> 包含来自 String[] 的所有元素。如何检查?
【发布时间】:2020-02-28 10:47:26
【问题描述】:

我需要检查List&lt;Map&lt;String, String&gt;&gt; 是否包含来自String[] 的所有元素。

我这样解决了这个问题:

    private boolean method(List<Map<String, String>> listWithMaps, String[] conditions){
        List<String> list = new ArrayList<>();
        for (Map<String, String> mapFromList : listWithMaps) {
            list.add(mapFromList.get("CAUSE"));
        }
        return list.containsAll(Arrays.asList(conditions));
    }

但也许有更正确的方法来解决我的问题?

【问题讨论】:

  • “更正确”,因为您的解决方案遇到问题?
  • 让我想起了一条有趣的推文:“当努力在 List>> 中找到正确的括号时,泛型或语言,而是弱建模的提示。”(来自@gunnarmorling)
  • 你的例子是正确的。 “更多”是什么意思?
  • 我的意思是代码的风格。也许在我的案例中可以使用集合中的某种功能

标签: java arraylist collections


【解决方案1】:

流的几种可能性:

listWithMaps.stream().map(map -> map.get("CAUSE")).collect(toSet()).containsAll(Arrays.asList(conditions));

Arrays.stream(conditions)
            .allMatch(condition -> listWithMaps.stream().anyMatch(map -> map.get("CAUSE").equals(condition)));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 2018-03-18
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    相关资源
    最近更新 更多