【发布时间】:2013-06-26 21:09:34
【问题描述】:
所以我有以下HashMap:
HashMap<String, List<someDataType>> map;
我想创建一个新的 HashMap,它仅由 map 中的 k/v 对组成,其长度小于某个“x”的值(列表)。我知道如何做到这一点的唯一方法是遍历 HashMap 并将 k/v 对放入一个新的 HashMap 中。有没有更简洁的方法来实现我正在寻找的东西?谢谢。
【问题讨论】:
-
你必须在你的地图上保持额外的约束,才能不必遍历整个地图。例如,如果您的地图按列表的长度升序排序,那么您可以循环直到看到长度超过 x 1。
-
@HunterMcMillen:你知道根据值排序的地图吗?
-
@jlordo 没想到,我想实现 Comparator 并使用 TreeMap 不会那么困难。
-
你为什么不喜欢这种方法?更简洁...您可以使用一些库(例如 google guava),让您以实用的方式执行此操作
-
@HunterMcMillen:
TreeMap按键排序,无论您如何编写比较器,都不能使用它按值排序。