以下程序如何打印ArrayList中包含的元素而不使用任何循环
import java.util.*;
class Abc{
public static void main(String args[]){
ArrayList<String> al=new ArrayList<String>();
al.add("Ravi");
al.add("Vijay");
al.add("Ravi");
al.add("Ajay");
System.out.println(al);
}
}
输出:[Ravi,Vijay,Ravi,Ajay]
答案 0 :(得分:4)
ArrayList
本身没有toString()
方法。它扩展了AbstractList
,内部扩展AbstractCollection
,定义了实际的'toString'方法。
来自java docs:
的toString
public String toString()
返回此集合的字符串表示形式。字符串 表示由一个集合的元素列表组成 它们由迭代器返回,用方括号括起来 ( “[]”)。相邻元素由字符“,”(逗号分隔)分隔 和空间)。元素将转换为字符串 将String.valueOf(对象)。
Overrides:
toString in class Object
Returns:
a string representation of this collection
答案 1 :(得分:1)
想想这一行:
System.out.println(al);
真的是
System.out.println(al.toString());
toString方法继承自AbstractCollection。
如果您对AbstractCollection的toString方法背后的内容感兴趣...
答案 2 :(得分:0)
它正在使用循环,但不是在您显示的代码中,而是在toString()
方法中ArrayList
继承自AbstractCollection
的方法,这是其祖先类之一。< / p>
每当您将对象传递给print()
或println()
时,实际发生的是print()
调用String.valueOf()
传递该对象。
反过来,如果传递的对象不为null,则调用对象s
toString`方法。
AbstractCollection
有一个toString
方法,它依赖于迭代并调用它所代表的集合中每个项目的toString
方法。
所以有一个循环,但它隐藏在调用方法的方法中。
答案 3 :(得分:0)
因为ArrayList是用Java编写的,它有自己的实现。这就是为什么当你使用toString()然后它会打印你的元素。
但是如果你尝试使用带有Array的toString(),那么它将无法工作。 因为数组是语言规范的一部分。
希望这会对你有所帮助:)。