将 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(网格)。
我正在尝试通过将 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(网格)。