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