Цикл Foreach в Java для словаря - PullRequest
       2

Цикл Foreach в Java для словаря

11 голосов
/ 21 февраля 2012

Я хочу просмотреть все элементы в словаре в Java.чтобы уточнить, что я хочу сделать, это код C #

Dictionary<string, Label> LableList = new Dictionary<string, Label>();
foreach (KeyValuePair<string, Label> z in LabelList);

Я не знаю, как сделать это Java, например, я сделал это

for(Object z: dic)

, ноговорит, что это не повторяется.Пожалуйста, сообщите ......

Ответы [ 4 ]

34 голосов
/ 21 февраля 2012

Я предполагаю, что у вас есть Map<String, Label>, который является структурой встроенного словаря Java.Java не позволяет вам выполнять итерации непосредственно над Map (т.е. она не реализует Iterable), потому что было бы неоднозначно, что вы на самом деле итерируете.

Это просто вопрос выбораперебирайте ключи, значения или записи (оба).

например,

Map<String, Label> map = new HashMap<String, Label>();
//...

for ( String key : map.keySet() ) {
}

for ( Label value : map.values() ) {
}

for ( Map.Entry<String, Label> entry : map.entrySet() ) {
    String key = entry.getKey();
    Label value = entry.getValue();
}

Ваш код C # выглядит так же, как перебирать записи (последний пример).

5 голосов
/ 21 февраля 2012

java.util.Map - это словарь эквивалентный, а ниже приведен пример того, как вы можете перебирать каждую запись

for(Map.Entry<K, V> e : map.entrySet())
{
    System.out.println(e.getKey()+": "+e.getValue());
}
1 голос
/ 10 декабря 2016

Я пытался добавить содержимое одной HashMap (a) в другую HashMap (b).

Мне было просто перебрать HashMap следующим образом:

a.forEach((k, v) -> b.put(k, v));

Вы можете манипулировать моим примером, чтобы делать то, что вы хотите, на другой стороне "->".

Обратите внимание, что это лямбда-выражение, и вам придется использовать Java 1.8 (Java 8) или новеечтобы это работало.: -)

1 голос
/ 21 февраля 2012

Лучше всего использовать это:

for (String key : LableList.keys()) {
    Label value = LableList.get(key);

    // do what you wish with key and value here
}

Однако в Java лучше не использовать словарь, как в .NET, а использовать один из подклассов Map, например, HashMap.Вы можете перебрать один из них, например, так:

for (Entry<String, Label> e : myMap.entrySet()) {
    // Do what you wish with e.getKey() and e.getValue()
}

Вам также не рекомендуется использовать словарь в официальном javadoc.

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