Итерация хэш-карты - PullRequest
       6

Итерация хэш-карты

0 голосов
/ 01 марта 2010

У меня есть hashmap, объявленный как private HashMap testMessages = null;

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

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

функция (строковое имя файла) {..

цикл через значения хэш-карты

проверить, имеет ли префикс имени файла префикс одно из значений hashmap, если это так вернуть истину иначе вернуть ложь }

пример hashmap: key1, прод key2, тест ключ3, манекен
пример имени файла: test123_20012010.csv

должно возвращать true, так как перед именем файла стоит одно из значений hashmap

Как я могу это сделать?

Ответы [ 4 ]

5 голосов
/ 01 марта 2010
for (String prefix : map.values()) {
   if (filename.startsWith(prefix)) {
      return true;
   }
}
return false;

Следует отметить, что это линейное время в количестве записей на карте в худшем случае. Если у вас есть несколько filename, для которых вы хотите выполнить проверку, гораздо лучше предварительно обработать префиксы и создать что-то вроде patricia trie и других быстрых словарных структур данных.

2 голосов
/ 01 марта 2010

Вот подход грубой силы, чтобы перебрать значения карты хеша и проверить, начинается ли имя файла со значения.

0 голосов
/ 01 марта 2010
function(String fileName)
{
     for(String value : hashMap.values())
     {
      if(fileName.startsWith(value))
           return true;
     }
  return false;
}
0 голосов
/ 01 марта 2010

пиявка от leepoint.net

public static void iterate_over_hashmap(Map mp) {
    Iterator it = mp.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry pairs = (Map.Entry)it.next();
        System.out.println(pairs.getKey() + " = " + pairs.getValue());
    }
}

Вы должны рассматривать каждую запись как пару ключ / значение и перебирать их как одну сущность. Затем вы добавляете его в Map.Entry, а затем можете читать оба по отдельности

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