我正在寻找一种方法:
myMap.containsKeyStartingWith("abc"); // returns true if there's a key starting with "abc" e.g. "abcd"
或
MapUtils.containsKeyStartingWith(myMap, "abc"); // same
我想知道是否有人知道这样做的简单方法
由于
答案 0 :(得分:14)
这可以使用标准SortedMap
:
Map<String,V> tailMap = myMap.tailMap(prefix);
boolean result = (!tailMap.isEmpty() && tailMap.firstKey().startsWith(prefix));
未排序的地图(例如HashMap
)本质上不支持前缀查找,因此对于那些你必须迭代所有键的地图。
答案 1 :(得分:2)
从地图中,您可以获得一组键,如果它们是String,您可以迭代Set的元素并检查startsWith("abc")
答案 2 :(得分:0)
在Adel Boutros上建立关于迭代键效率的答案/评论,你可以将密钥迭代封装在Map
子类或装饰器中。
扩展HashMap
将为您提供一个类,可以将方法放入方法中,并保留特定于地图的代码,从而降低复杂性并使代码更自然易读。