Java: do-while (regex), hashtable.containsKey () возможно? - PullRequest
1 голос
/ 05 января 2012

Можно ли использовать регулярное выражение с Hashtable.containsKey (значение объекта);

Есть ли способ сделать следующий псевдокод?

while ( myHashtable.containsKey(regex) ) {
    //TODO
};

Где мое регулярное выражение будет "ОШИБКА [0-9] [0-9]?"

edit: я устанавливаю любое количество сообщений об ошибках из серверной Java-программы, которая отправляется в JSP как хеш-таблица. JSP должен отображать эти сообщения об ошибках из хеш-таблицы. Использование хеш-таблицы в JSP не подлежит обсуждению. Мне просто нужно знать, как убедиться, что мы прочитали все сообщения об ошибках.

Ответы [ 2 ]

3 голосов
/ 05 января 2012

Не так, как вы предлагаете.

Хеш-таблицы используют методы Object hashCode и equals для быстрого поиска искомого объекта.

Вместо этого вы можете перебирать элементы хеш-таблицы и искать совпадения следующим образом:

for (Map.Entry<String,Object> entry : myHashtable.entrySet){
    if (regex.matcher(entry.getKey()).matches()) {
        //TODO
    }
}
0 голосов
/ 05 января 2012

Я не проверял ничего из этого, но поскольку функция, которую вы хотите использовать, ожидает объект, и вы хотите использовать регулярное выражение, вам нужен объект, который является регулярным выражением.

Вы можете дать объекту Pattern выстрел: http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

...