Java 正在尝试打印ArrayList的内容

Java 正在尝试打印ArrayList的内容,java,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 Poi

我试图打印出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);
import java.util.*;
公共课堂作业23{
公共静态void main(字符串[]args){
ArrayList=新建ArrayList();
对于(int i=0;i<99;i++){
添加(新点());
}
集合。排序(列表);
系统输出打印项次(“+列表);
}
}
类点实现了可比较的{
int x=(int)(Math.random()*-10);
int y=(int)(Math.random()*-10);
将其更改为:

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

您得到意外结果的原因是列表由
Point
对象组成。因此调用
list.get(i)< /代码>返回一个完整的<代码>点<代码>,而您要在Poto/<代码>中指定该字段以打印出来。

< p>您会发现,如果您在<代码> >点和您编写的大多数类中实现<代码> toSooS> <代码>,在许多情况下,您会得到更好的结果。
@Override public String toString()
{
     return String.format("(%d,%d)", x, y);
}

点中的超写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+"]";
  }
}
您将获得如下输出:

Points[[20,10],[15,10]...]
重写Point类上的
toString()
方法

class Point implements Comparable<Point>{

    @Override
    public String toString() {
         return "x =" + x  + ", y="+y;
    }
}
类点实现可比较{
@凌驾
公共字符串toString(){
返回“x=“+x+”,y=“+y;
}
}

要打印
数组列表的内容,请使用
for循环

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

只需使用一个
foreach
循环来迭代列表。我认为位置是指内存中的位置(即对象的基址).这有点含糊不清,因为你在这里谈论的是点,点也描述了位置!嘻嘻,是的,对不起,我的意思是地址:3+1用于使用
String.format
而不是一系列字符串连接。我认为Java编译器足够聪明,可以对连接进行有效处理,但格式字符串版本是al更具可读性的方式。(当然假设读者知道如何读取格式字符串!)太棒了!压缩并完成了这项工作!
for (Point p : list)
    System.out.println("point x: " + p.x ", point y: " + p.y);