抱歉,我怀疑答案很简单,但我对我目前这样做的方式感到恼火,并试图找到另一种方式(旧的python习惯,对不起)。
我基本上想要创建一个列表列表(列表有两个整数),例如它看起来像这个[[0,0], [0,1],[1,2]]
等等。
现在,我一直在做的两种方式(我认为不对)是教学方式:
list1.add(data);
list1.add(more_data);
final_list_of_list.add(list1);
我做了一些挖掘以找到另一种方式,因为我很懒,想要一次性完成这项工作,所以我找到了一个符合我需要的命令(就获取数据而言)
List final_list_of_list = new ArrayList();
final_list_of_list.add(new Point(0, 0)); //and so on..
问题在于,当我查看漂亮的数据时,我看到了这个丑陋:
[java.awt.Point[x=970,y=10], java.awt.Point[x=65,y=10], java.awt.Point[x=729,y=10]
当然有一种更简单的方法来添加数据,但仍然看起来不错(就像我上面的格式一样)?
答案 0 :(得分:3)
您可以继承Point
或创建自己的实现并覆盖toString()
方法以打印更漂亮的内容。我认为这比尝试使用列表列表更容易。
也许是这样的:
public class MyPoint {
public final int x;
public final int y;
public MyPoint(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public String toString() {
return "[" + x + "," + y + "]";
}
}
答案 1 :(得分:2)
这里有几件事似乎不太清楚:
a)通过“查看”您的数据,您似乎意味着使用toString()进行打印。如果您希望它看起来不同,则必须提供自己的toString()方法。或者使用其他方式“查看”您的数据。
b)你可能想要为对定义你自己的类,例如作为Pair,这样你将比使用Point(只接受int,IIRC)更灵活。然后你应该为你的列表使用泛型,你想要的列表就像
List<Pair<type1, type2>> allMyData;
这不是最少的打字量,而是最好的编程方式; - )
答案 2 :(得分:1)
我相信你可以覆盖点对象的“tostring方法”。看看this。