Как проверить, начинается ли ключ на карте с заданным значением String - PullRequest
12 голосов
/ 25 января 2012

Я ищу такой метод, как:

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

или

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

Интересно, знает ли кто-нибудь простой способ сделать это

Спасибо

Ответы [ 3 ]

14 голосов
/ 25 января 2012

Это можно сделать с помощью стандартного SortedMap:

Map<String,V> tailMap = myMap.tailMap(prefix);
boolean result = (!tailMap.isEmpty() && tailMap.firstKey().startsWith(prefix));

Несортированные карты (например, HashMap) не поддерживают поиск префиксов, поэтому для тех, ктоПридется перебирать все ключи.

2 голосов
/ 25 января 2012

На карте вы можете получить набор ключей, а если они строковые, вы можете перебирать элементы набора и проверять startsWith("abc")

0 голосов
/ 26 января 2012

Чтобы построить ответ / комментарий Аделя Бутроса об эффективности итерации ключей, вы можете инкапсулировать итерацию ключа в подклассе или декораторе Map.

Расширение HashMap даст вам класс для помещенияметод и исключите специфичный для карты код из вашего метода, что снижает сложность и делает код более естественным для чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...