Как вы ищите по карте? - PullRequest
       1

Как вы ищите по карте?

3 голосов
/ 23 апреля 2010

У меня есть карта:

Map<String, String> ht = new HashMap();

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

1,2,3,4,5,5,5

, и подходящая строка будет 5.

Так что у меня естьэто:

  String match = "5";
  ArrayList<String> result = new ArrayList<String>();

 Enumeration num= ht.keys();
     while (num.hasMoreElements()) {
        String number = (String) num.nextElement();

        if(number.equals(match))
        {
           result.add(number);
        }

     }

Ответы [ 4 ]

5 голосов
/ 23 апреля 2010

Не совсем уверен, что понимаю вас, но думаю, вы ищете containsKey?

ht.containsKey("5");
3 голосов
/ 23 апреля 2010

Я предполагаю, что вы хотите найти ключи по значениям.

Простой код:

List<String> matches = new ArrayList<String>();
for (Map.Entry<String,String> entry : map.keys()) {
    if (targetValue.equals(entry.getValue())) {
        matches.add(entry.getKey());
    }
}

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

2 голосов
/ 23 апреля 2010

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

Map<String, String> m = new HashMap<String, String>();
..

List<String> result = new ArrayList<String>();
    for(String s: m.values()){
        if(s.equals("5")){
            result.add(s);
        }
    }

Кроме того, следите за null s в вашем операторе if.

1 голос
/ 23 апреля 2010

Map API больше не поощряет вас использовать Enumeration, так как он довольно старый интерфейс, и ожидается, что он будет заменен интерфейсами COllection, но наследие все еще вызывает беспокойство.

Метод KeySet возвращает вам Set Setи вы можете напрямую использовать содержит метод набора для сравнения

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