Java 从arraylist打印内容
所以我想知道如何打印数组列表的实际内容,而不是内存位置Java 从arraylist打印内容,java,arrays,arraylist,Java,Arrays,Arraylist,所以我想知道如何打印数组列表的实际内容,而不是内存位置 import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Scanner; public class hw2redo
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class hw2redo
{
public static void main(String args[]) throws FileNotFoundException
{
//Scan file for data
GeometricObject g = null;
BufferedReader file = new BufferedReader(new FileReader("file.txt"));
Scanner diskScanner = new Scanner(file);
//Create dynamic array list
ArrayList<GeometricObject> list = new ArrayList<GeometricObject>();
//Scan data and add data to list
while(diskScanner.hasNext())
{
String geolist = diskScanner.nextLine();
g = recreateObject(geolist);
list.add(g);
}
showObjects(list);
}
private static GeometricObject recreateObject(String data)
{
GeometricObject object = new GeometricObject(data);
return object;
}
private static void showObjects(ArrayList<GeometricObject> list)
{
for(GeometricObject o : list)
System.out.println(o);
}
}
class GeometricObject
{
public GeometricObject(String data) {
// TODO Auto-generated constructor stub
}
}
这很好,因为我很接近,我只需要找出如何打印实际内容
我在file.txt中查找的内容是
Circle,green,false,4.0
Circle,blue,false,2.0
Circle,blue,true,7.0
Rectangle,orange,true,10.0,6.0
Rectangle,green,false,5.0,11.0
Rectangle,red,true,14.0,12.0
任何帮助都将不胜感激。谢谢
System.out.println(o);
调用System.out.println时,显然会调用对象的toString()方法。因为您没有ovveridetoString()
,所以它调用默认实现。Ovveride toString()方法,以便根据需要打印
public class GeometricObject {
....
@Override
public String toString() {
// return string representation of your object.
}
}
首先:您需要在类中使用
toString
方法:
class GeometricObject
{
private String data;
public GeometricObject(String data) {
this.data = data;
}
@Override
public String toString() {
return data;
}
}
如果没有覆盖,您将使用
Object.toString()
。对象的toString
打印出对象的类名和哈希代码,正如您所观察到的那样。您需要重写GeometricObject#toString()
您能再详细一点吗?我知道override意味着提供与方法完全相同的参数列表,但在方法内部我会提供什么呢@Eran@RiFFRAFF您不需要更改当前方法。保持代码原样,只需在GeometricObject中验证toString方法。好了,谢谢你!但老实说,我不能100%确定为什么添加该代码会得到正确的输出。“你到底有什么可以解释的吗?”里夫拉夫,我建议你去看一看,多看一看
class GeometricObject
{
private String data;
public GeometricObject(String data) {
this.data = data;
}
@Override
public String toString() {
return data;
}
}