是否可以在Java中创建Map迭代器的副本?

时间:2017-09-14 00:29:28

标签: java hashmap iterator

public boolean placeLizardsByDFS(int noOfQueens){
        if(noOfQueens == 0) {
            return true;
        }
        else {
            Iterator itForRow  = allowedRows.entrySet().iterator();
            while (itForRow.hasNext()) {
                double tempRow = (Double) ((Map.Entry) itForRow.next()).getKey();
                Iterator itForColumn = allowedColumns.entrySet().iterator();
                while(itForColumn.hasNext()) {
                    double tempColumn = (Double) ((Map.Entry) itForColumn.next()).getKey();
                    placeQueen(tempRow, tempColumn);
                    if (placeLizardsByDFS(noOfQueens - 1))
                        return true;
                    else
                        removeQueen(tempRow, tempColumn, tempRangeForRow, tempRangeForColumn);
                }
            }
            return false;
        }
    }

我试图解决N皇后问题。但似乎有更大的输入,我的代码是低效的。我试图通过减少编号进行优化。行和列的行,以搜索更深层次的递归。那么可以为地图传递迭代器的副本吗?  我在这里遇到的问题是,我是否可以为下一级递归传递一个新的迭代器而不会因为Java是通过引用调用而在更高级别上的迭代器受到影响?

0 个答案:

没有答案