我正在寻找类似这样的方法:
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
)本质上不支持前缀查找,因此对于这些映射,您必须遍历所有键。
从地图中,您可以获取一组键,如果它们是字符串,则可以迭代集合元素并检查 startsWith("abc")
。
MyMapExtension m = new MyMapExtension(myMap);
这种方式。或者你可以采用装饰器模式来包装地图。两种方法都与你最初的想法类似。 - David Carboni
TreeMap treeMap = new TreeMap(); treeMap.putAll(hashMap);
- EddTreeMap<K,V> treeMap = new TreeMap<K,V>(hashMap);
,其中hashMap
是原始的哈希映射。 - NPE