2010-11-05 15 views
5

tengo el primer par clave/valor en un LinkedHashMap, lo que me sale de un bucle:Obtener el siguiente artículo en LinkedHashMap?

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

Más adelante, en base a un evento, necesito el siguiente par clave/valor en el LinkedHashMap. ¿Cuál es la mejor manera de hacer esto?

+0

¿Más adelante en la misma función o dónde? – thattolleyguy

Respuesta

4

Consigue un iterador y utilizar hasNext() y 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

En lugar de para cada ciclo, use un iterador.

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(); 
} 
1

Es mucho más fácil tener el valor anterior si es necesario comparar con los valores consecutivos.

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; 
} 
Cuestiones relacionadas