Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在迭代时从hashmap中删除密钥_Java_Loops_Hashmap_Key - Fatal编程技术网

Java 如何在迭代时从hashmap中删除密钥

Java 如何在迭代时从hashmap中删除密钥,java,loops,hashmap,key,Java,Loops,Hashmap,Key,我在一个hashmap上迭代,并比较两个键。我在将第一个键保存到temp后删除它,因此它不会通过键集进行检查 如果发现它与前一个密钥配对,我想删除这两个密钥(或者至少不再迭代该特定密钥) Iterator<Entry<Double, List<Double>>> i = map.entrySet().iterator(); while(i.hasNext()) { Map.Entry<Double, List<Double>>

我在一个hashmap上迭代,并比较两个键。我在将第一个键保存到temp后删除它,因此它不会通过键集进行检查 如果发现它与前一个密钥配对,我想删除这两个密钥(或者至少不再迭代该特定密钥)

Iterator<Entry<Double, List<Double>>> i = map.entrySet().iterator();

while(i.hasNext()) {
    Map.Entry<Double, List<Double>> next = i.next();
    i.remove();

    for(Map.Entry<Double, List<Double>> e : map.entrySet()) {

        //if true they are a pair
        if((next.getKey() == Double.POSITIVE_INFINITY && e.getKey() == 0) || (next.getKey() == 0 && e.getKey() == Double.POSITIVE_INFINITY) || Math.abs(next.getKey() * e.getKey() + 1.0) < 0.0000001) {

            List<Double> arrayX = next.getValue();
            List<Double> arrayY = e.getValue();

            for(int a = 0; a < arrayX.size(); a++) {
                for(int b = 0; b < arrayY.size(); b++) {
                    if(Math.abs(arrayX.get(a) - arrayY.get(b)) < 0.0000001) {
                    squares++;
                    }
                }
            }

        }
    }
}

我怎样才能做到这一点呢?

如果你将这些键相乘得到-1,那么我会将它们配对,上面只是一个例子
{1,2,3,1,2,4,5,6}
1 against {2,3,1,2,4,5,6}
when it reaches 1 remove it and perform a function
so the list left is {2,3,2,4,5,6}
repeat until all the list has been traversed