簡體   English   中英

試圖打印出ArrayList的內容

[英]Trying to print out the contents of an ArrayList

我正在嘗試打印出ArrayList“列表”的內容,但我不斷得到我認為的元素位置而不是內容。

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);

要打印出ArrayList的內容,請使用for loop

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

如果你為Point實現toString和你編寫的大多數類,你會發現你可以獲得更好的結果。 考慮一下:

@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+"]";
  }
}

用法相同:

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

你會得到像這樣的輸出

Points[[20,10],[15,10]...]

在Point類上覆蓋toString()方法。

class Point implements Comparable<Point>{

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

將其更改為:

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

您獲得意外結果的原因是您的列表包含Point對象。 所以調用list.get(i)返回一個整個Point ,而你想在Point指定要打印出來的那個字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM