将 ArrayList 打印到输出文件

Printing ArrayList to an output file

我正在尝试通过将 PriorityQueue 的内容转换为 ArrayList 来将其打印到输出文件。

(注意:我没有打印到控制台!)

除了我声明了一个 toString 方法,我仍然得到这样的输出:I@7c3df479

正在将队列转换为 ArrayList:

private PriorityQueue<GameState> unexpanded = new PriorityQueue<>(Comparator.comparing(GameState::getF_n));

...

public ArrayList<GameState> getUnexpanded()
    {
        ArrayList<GameState> unExpanded = new ArrayList<>(unexpanded);
        return unExpanded;
    }

获取 ArrayList 并尝试打印:

private void printSolution() throws IOException
    {
        FileWriter outFile = new FileWriter("output.txt");
        PrintWriter output = new PrintWriter(outFile);
        ArrayList<GameState> unexpanded = game.getUnexpanded();

        for (int i = 0; i < unexpanded.size(); i++)
        {
            output.printf(unexpanded.get(i).toString() + "\n");
        }

        output.close();
    }

toString 方法:

public class GameState
{
private int[][] grid;

...

@Override
    public String toString()
    {
        return "{" + grid + "}";
    }
}

一切正常,但程序打印如下内容:I@7c3df479

有人可以帮我解决这个问题吗?

非常感谢您提前的回答和评论。

'grid' 被声明为二维数组,在 java 中不是原始数组。因此,当您尝试打印它时,它仍会打印出内存地址/引用。

尝试将其替换为 Arrays.deepToString(网格)。