试图打印出ArrayList的内容

时间:2013-11-17 04:38:39

标签: java

我正在尝试打印出ArrayList“list”的内容,但我不断得到我认为的元素位置而不是内容。

import java.util.*;
public class Assignment23 {

public static void main (String[] args){

ArrayList<Point> list = new ArrayList<Point>();
for(int i = 0; i < 99; i++){
    list.add(new Point());
}
Collections.sort(list);
System.out.println(""+list);
}
}
class Point implements Comparable<Point>{
int x = (int)(Math.random()*-10);
int y = (int)(Math.random()*-10);

5 个答案:

答案 0 :(得分:8)

要打印ArrayList的内容,请使用for loop

for (Point p : list)
    System.out.println("point x: " + p.x ", point y: " + p.y);

答案 1 :(得分:6)

如果您为toString和您编写的大多数课程实施Point,您会发现在这种情况下会得到更好的结果。考虑一下:

@Override public String toString()
{
     return String.format("(%d,%d)", x, y);
}

答案 2 :(得分:3)

在点

中重写toString方法
class Point implements Comparable<Point>{
  int x = (int)(Math.random()*-10);
  int y = (int)(Math.random()*-10);

  @Override
  public String toString()
  {
   return "["+x+","+y+"]";
  }
}

用法相同:

Collections.sort(list);
System.out.println("Points["+list+"]);

您将获得类似

的输出
Points[[20,10],[15,10]...]

答案 3 :(得分:2)

在Point类上覆盖toString()方法。

class Point implements Comparable<Point>{

    @Override
    public String toString() {
         return "x =" + x  + ", y="+y;
    }
}

答案 4 :(得分:0)

将其更改为:

System.out.println(""+list.get(i).x);  //Or whatever element in `Point` you want to print

您获得意外结果的原因是您的列表包含Point个对象。因此,调用list.get(i)会返回整个Point,而您希望在Point中指定该字段进行打印。