У меня странное поведение.
[ОБНОВЛЕНИЕ: приведен полный пример выполнения:]
package finaltestwithenummapentry;
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.Map.Entry;
public class FinalTestWithEnumMapEntry {
enum SomeEnum{
ONE, TWO, THREE;
}
public static void main(String[] args) {
EnumMap<SomeEnum, Integer> map = new EnumMap<SomeEnum, Integer>(SomeEnum.class);
map.put(SomeEnum.ONE, 1);
map.put(SomeEnum.TWO, 2);
map.put(SomeEnum.THREE, 3);
ArrayList<Entry<SomeEnum, Integer>> entryList = new ArrayList<Entry<SomeEnum, Integer>>();
for(final Entry<SomeEnum, Integer> entry : map.entrySet()){
System.out.println("Key is " + entry.getKey() + ", value is " + entry.getValue());
//This prints the correct keys and values
entryList.add(entry);
}
System.out.println("");
for(Entry<SomeEnum, Integer> entry:entryList){
System.out.println("Key is " + entry.getKey() + ", value is " + entry.getValue());
//This prints only the last entry each time
}
}
}
Вывод (JavaSE 1.6):
Key is ONE, value is 1
Key is TWO, value is 2
Key is THREE, value is 3
Key is THREE, value is 3
Key is THREE, value is 3
Key is THREE, value is 3
Мой entry
, который я предполагаю, является окончательным, каждый раз, кажется, перезаписывается следующим.Мне нужно иметь возможность захватывать правильную запись каждый раз, так как я передаю каждый элемент анонимному экземпляру внутреннего класса внутри цикла for
.
[ОБНОВЛЕНИЕ: Эта проблема не существует в Java 7, только Java 6 (и, возможно, раньше)]
ОБНОВЛЕНИЕ: Возможно, мне придется заставить мой код работать, независимо от того, скомпилирован ли он с Java 6 или 7, так какой же самый эффективный обходной путь для его работы в любом случае?1015 *