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
                }
            }
        }