我正在尝试打印出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);
答案 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
中指定该字段进行打印。