java - 根据某些规范创建 HashMap 的子集?

标签 java hashmap

所以我有以下 HashMap:

HashMap<String, List<someDataType>> map ;

我想创建一个仅由 map 中的 k/v 对组成的新 HashMap具有长度小于某个“x”的值(列表)。我知道如何执行此操作的唯一方法是遍历 HashMap 并将 k/v 对放入新的 HashMap。有没有更简洁的方法来实现我正在寻找的东西?谢谢。

最佳答案

使用 Guava :

Map<String, List<String>> newMap = 
    Maps.filterEntries(originalMap, new MyEntryPredicate(10));

哪里:

private static class MyEntryPredicate implements Predicate<Map.Entry<String, List<String>>> {

    // max list length, exclusive
    private int maxLength;

    private MyEntryPredicate(int maxLength) {
        this.maxLength = maxLength;
    }

    @Override
    public boolean apply(Map.Entry<String, List<String>> input) {
        return input != null && input.getValue().size() < maxLength;
    }
}

关于java - 根据某些规范创建 HashMap 的子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17330487/

相关文章:

java - 具有一个 HashMap 的 HashMap 数组

java - minikube 中的损坏 jar

java - Mac OSX Mavericks (10.9.1) 上 Xerial 的 JDBC SQLite 出现 SQLITE_NOTADB 错误

java - 检索位图给出未知主机异常?

java - 如何在Java中对SQL查询处理的数据进行处理和分组?

对象引用的 Java 哈希表问题

java - 访问 JAVA 中的其他源文件夹

java - 使用 Java EE 7 创建 JSON 数组

java - 按值降序对 linkedhashmap 进行排序

Java HashMap 键值存储与检索