Java 正在尝试打印ArrayList的内容
我试图打印出ArrayList“list”的内容,但我一直得到我认为是元素的位置,而不是内容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
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);