java—将arraylist打印到输出文件

jk9hmnmh  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(585)

这个问题在这里已经有答案了

java—打印2d数组的最佳方法(13个答案)
上个月关门了。
我试图通过将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
有人能帮我吗?
非常感谢您的回答和评论。

kmynzznz

kmynzznz1#

“grid”被声明为一个2d数组,它在java中不是原语。因此,当您试图打印它时,它仍然打印出内存地址/引用。
试着用数组替换它。改为deeptostring(grid)。

相关问题