【发布时间】:2020-11-20 02:42:53
【问题描述】:
我正在尝试通过将 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
有人可以帮我解决这个问题吗?
非常感谢您提前提供的答案和cmets。
【问题讨论】:
-
我的问题已结束,说明这个问题已经有了答案,但链接的问题没有我的问题的答案。我请求重新提出我的问题。
-
解决方法相同:使用
Arrays.deepToString(...)创建二维数组的字符串表示。您需要在toString()中使用它而不是将其输出打印到控制台这一事实不会改变基本解决方案:使用Arrays.deepToString() -
我也试过了,但没用。您还有其他解决方案吗?
标签: java arraylist tostring priority-queue printwriter