所以我有以下 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/