如何检查Map中的键是否以给定的String值开头

时间:2012-01-25 17:40:23

标签: java string map

我正在寻找一种方法:

myMap.containsKeyStartingWith("abc"); // returns true if there's a key starting with "abc" e.g. "abcd"

MapUtils.containsKeyStartingWith(myMap, "abc"); // same

我想知道是否有人知道这样做的简单方法

由于

3 个答案:

答案 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将为您提供一个类,可以将方法放入方法中,并保留特定于地图的代码,从而降低复杂性并使代码更自然易读。