打印ArrayList

dan*_*r93 72 java printing arrays arraylist

我有一个包含Address对象的ArrayList.

如何打印此ArrayList的值,这意味着我打印出数组的内容,在本例中为数字.

我只能使用以下代码打印出数组的实际内存地址:

for(int i = 0; i < houseAddress.size(); i++) {   
    System.out.print(houseAddress.get(i));
}  
Run Code Online (Sandbox Code Playgroud)

odo*_*ner 96

Arrays.toString(list.toArray())
Run Code Online (Sandbox Code Playgroud)

  • list是houseAddress这里:`Arrays.toString(houseAddress.toArray())` (3认同)
  • AbstractCollection 已经覆盖了 ```toString()``` 来打印其元素的内容。因此,只需 ```list.toString()``` 打印其所有元素的 ```toString()```。这适用于所有集合。 (3认同)
  • System.out.println(list) 打印相同的输出; (2认同)

Ash*_*Jha 16

然后toString()为您的address班级添加方法

System.out.println(Arrays.toString(houseAddress));
Run Code Online (Sandbox Code Playgroud)

  • 这只适用于数组,而不适用于数组列表.你不能提供`houseAddress`作为`Arrays.toString()`的参数,因为它不是Array类型. (38认同)

Ben*_*kin 10

根据我的理解,您正在尝试打印数组的ArrayList,并且只能显示它

System.out.println(Arrays.deepToString(list.toArray()));
Run Code Online (Sandbox Code Playgroud)


con*_*ius 9

由于您没有为toString()方法提供自定义实现,因此它调用默认值来打印该对象的内存中的地址

Address类中的解决方案会覆盖这样的toString()方法

public class Address {

int addressNo ; 
....
....
...

protected String toString(){
    return Integer.toString(addressNo);
}
Run Code Online (Sandbox Code Playgroud)

现在你打电话的时候

houseAddress.get(i)  in the `System.out.print()` method like this
Run Code Online (Sandbox Code Playgroud)

System.out.print( houseAddress.get(i) )toString()对的Address对象会被称为


Rag*_*lan 6

假设您有一个这样的数字清单

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
Run Code Online (Sandbox Code Playgroud)

如果您打印列表

//method 1
// Conventional way of printing arraylist
for (int number : numbers) {
    System.out.print(number);
}

//method 2
// Lambda Expression to print arraylist
numbers.forEach((Integer value) -> System.out.print(value));

//method 3
// Lambda Expression to print arraylist
numbers.forEach(value -> System.out.print(value));


//method 4
// Lambda Expression (method reference) to print arraylist
numbers.forEach(System.out::print);
Run Code Online (Sandbox Code Playgroud)


Jos*_*ett 5

你是说这ArrayList是存储数组的地址,因为这是从toString调用返回的内容,还是因为那实际上是你存储的内容?

如果你有一个ArrayList数组(例如

int[] arr = {1, 2, 3};
houseAddress.add(arr);
Run Code Online (Sandbox Code Playgroud)

然后打印您需要调用的数组值Arrays.deepToString:

for (int i = 0; i < houseAddress.size(); i++) {
     System.out.println(Arrays.deepToString(houseAddress.get(i)));
}
Run Code Online (Sandbox Code Playgroud)


Sur*_*raj 5

您可以简单地将其指定为:

System.out.println("Address:" +houseAddress);
Run Code Online (Sandbox Code Playgroud)

您的输出将如下所示 [address1, address2, address3]

这是因为ArrayList类或其超类将覆盖toString()函数。

希望这可以帮助。