Java Hashset迭代引发Illegate状态错误
我有两个哈希映射,需要从其中一个中删除一个元素。这就是我现在正在做的Java Hashset迭代引发Illegate状态错误,java,iterator,hashmap,hashtable,hashset,Java,Iterator,Hashmap,Hashtable,Hashset,我有两个哈希映射,需要从其中一个中删除一个元素。这就是我现在正在做的 for(Iterator<Byte> iterator = Ka.iterator(); iterator.hasNext();) { byte kaValue = iterator.next(); byte potentialPIValue = (byte)(E1a + kaValue); for(byte actua
for(Iterator<Byte> iterator = Ka.iterator(); iterator.hasNext();) {
byte kaValue = iterator.next();
byte potentialPIValue = (byte)(E1a + kaValue);
for(byte actualPIValue : getPIs) {
if (potentialPIValue != actualPIValue )
iterator.remove();
}
}
由于在内部循环中调用iterator.remove()语句,您可能会在不移动到下一个元素的情况下两次命中iterator.remove()语句 试一试 for(Iterator Iterator=Ka.Iterator();Iterator.hasNext();){ 字节kaValue=iterator.next(); 字节电位PiValue=(字节)(E1a+kaValue); 对于(字节实际值:getPIs){ 如果(电势值!=实际有效值){ iterator.remove(); break;//退出内部循环 } } }
exception in thread "main" java.lang.IllegalStateException
at java.util.HashMap$HashIterator.remove(HashMap.java:910)
at DESPrac.main(DESPrac.java:59)
for(Iterator<Byte> iterator = Ka.iterator(); iterator.hasNext();) {
byte kaValue = iterator.next();
byte potentialPIValue = (byte)(E1a + kaValue);
for(byte actualPIValue : getPIs) {
if (potentialPIValue != actualPIValue ){
iterator.remove();
break; // Exit the inner loop
}
}
}