打印ArrayList

我有一个包含地址对象的ArrayList。

如何打印此ArrayList的值,这意味着我打印出数组的内容,在这种情况下,数字。

我只能用这个代码打印出数组的实际内存地址:

for(int i = 0; i < houseAddress.size(); i++) { System.out.print(houseAddress.get(i)); } 
 Arrays.toString(list.toArray()) 

添加toString()方法到你的address类然后做

 System.out.println(Arrays.toString(houseAddress)); 

因为你还没有提供toString()方法的自定义实现,它会调用默认的打印内存中的地址的那个对象

解决scheme在您的地址类覆盖toString()方法是这样的

 public class Address { int addressNo ; .... .... ... protected String toString(){ return Integer.toString(addressNo); } 

现在当你打电话

 houseAddress.get(i) in the `System.out.print()` method like this 

System.out.print( houseAddress.get(i) )将调用Address对象的toString()

你是说ArrayList正在存储数组的地址,因为那是什么从toString调用返回,或者因为这实际上是你存储的?

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

 int[] arr = {1, 2, 3}; houseAddress.add(arr); 

然后打印你需要调用Arrays.deepToString的数组值。

 for (int i = 0; i < houseAddress.size(); i++) { System.out.println(Arrays.deepToString(houseAddress.get(i))); } 
 public void printList(ArrayList<Address> list){ for(Address elem : list){ System.out.println(elem+" "); } } 

你可以简单地把它作为:

 System.out.println("Address:" +houseAddress); 

你的输出看起来像[address1, address2, address3]

这是因为类ArrayList或其超类将有一个toString()函数重写。

希望这可以帮助。

把houseAddress.get(i)放在括号内,并调用.toString()函数:ie请看下面

 for(int i = 0; i < houseAddress.size(); i++) {System.out.print((houseAddress.get(i)).toString()); } 

从我所了解的你正试图打印一个数组ArrayList和唯一的方法来显示这将是

 System.out.println(Arrays.deepToString(list.toArray())); 

我不确定是否理解地址的概念(我假设这里是houseAddress),但是如果您正在寻找打印ArrayList的方法,那么您可以:

 System.out.println(houseAddress.toString().replaceAll("\\[\\]", "")); 

这帮助了我:

 System.out.println(Arrays.toString(codeLangArray.toArray())); 

Java 8开始 ,可以使用Iterable接口的forEach()方法。
这是一个默认的方法。 作为一个参数,它需要一个类的对象,它实现了function接口Consumer 。 您可以通过三种方式在本地实施“

匿名类

 houseAddress.forEach(new Consumer<String>() { @Override public void accept(String s) { System.out.println(s); } }); 

lambdaexpression式

 houseAddress.forEach(s -> System.out.println(s)); 

或者使用方法参考

 houseAddress.forEach(System.out::print); 

这种打印方式适用于Iterable接口的所有实现。
所有这些都为您提供了定义元素打印方式的方法,而toString()则以一种格式强制执行打印列表。

你可以使用一个迭代器。 这是在这里做最简单和最不合适的事情。 说houseAddress具有数据typesString

  Iterator<String> iterator = houseAddress.iterator(); while (iterator.hasNext()) { out.println(iterator.next()); } 

注意:你甚至可以使用一个增强的for循环,正如我在另一个答案中提到的那样

你甚至可以使用增强的for循环或迭代器

 for (String name : houseAddress) { out.println(name); } 

您可以将其更改为houseAddress的任何数据types,并避免不必要的转换