使用最少的输入将列表添加到另一个列表?

时间:2012-03-14 19:44:40

标签: java

抱歉,我怀疑答案很简单,但我对我目前这样做的方式感到恼火,并试图找到另一种方式(旧的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]

当然有一种更简单的方法来添加数据,但仍然看起来不错(就像我上面的格式一样)?

3 个答案:

答案 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