Получить следующий элемент в LinkedHashMap? - PullRequest
5 голосов
/ 06 ноября 2010

У меня есть первая пара ключ / значение в LinkedHashMap, которую я получаю из цикла:

for (Entry<String, String> entry : map.entrySet()) {
    String key = entry.getKey();
    String value = entry.getValue();
    //put key value to use
    break;
}

Позже, основываясь на событии, мне нужна следующая пара ключ / значение в connectedHashMap. Каков наилучший способ сделать это?

Ответы [ 3 ]

5 голосов
/ 06 ноября 2010

Получите итератор и используйте hasNext() и next():

...
Iterator<Entry<String, String>> it = map.entrySet().iterator();
if (it.hasNext()) {
    Entry<String, String> first = it.next();
    ...
}
...
if (eventHappened && it.hasNext()) {
    Entry<String, String> second = it.next();
    ...
}
...
1 голос
/ 06 ноября 2010

Намного проще иметь предыдущее значение, если вам нужно сравнить его с последовательными значениями.

String pkey = null; 
String pvalue = null; 
for (Entry<String, String> entry : map.entrySet()) { 
    String key = entry.getKey(); 
    String value = entry.getValue(); 

    // do something with pkey/key and pvalue/value.

    pkey = key;
    pvalue = value;
} 
1 голос
/ 06 ноября 2010

Вместо каждого цикла используйте итератор.

Iterator it = map.entrySet().iterator();
while (it.hasNext()) {
    Map.Entry entry = (Map.Entry)it.next();
    String key = entry.getKey();
    String value = entry.getValue();
    // do something
    // an event occurred 
    if (it.hasNext()) entry = (Map.Entry)it.next();
}
...