6

我在 LinkedHashMap 中有第一个键/值对,它是从循环中获得的:

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

稍后,基于一个事件,我需要linkedHashMap 中的下一个键/值对。做这个的最好方式是什么?

4

3 回答 3

5

获取一个迭代器并使用hasNext()and 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();
    ...
}
...
于 2010-11-05T21:12:51.427 回答
2

如果您需要与连续值进行比较,则更容易获得先前的值。

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;
} 
于 2010-11-05T21:20:16.653 回答
1

而不是每个循环,使用迭代器。

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();
}
于 2010-11-05T21:11:03.780 回答