打印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,并避免不必要的转换