AbstractCollection的toString()如何在Java中的Collection中打印一个Collection?

时间:2017-02-26 18:10:52

标签: java collections

List subitemsCategory=new ArrayList(); //Creating the subList
subitemsCategory.add("Garnier");       //Adding sublist
subitemsCategory.add("Bajaj");
List items=new ArrayList();            //Creating Main List
items.add("Shampoo");
items.add("Oil");
items.add(subitemsCategory);           //Adding a new List in items
System.out.println(items);             //Print Collection within Collection

如何打印集合中的集合?

1 个答案:

答案 0 :(得分:1)

通过toString递归电话 在Java toString中,可以在每个对象上调用方法,无论它是否是列表。

以这种方式打印由3个字符串"a""b""c"组成的列表: [a, b, c]
在元素之前打印[
然后打印以逗号分隔的列表 并且最后有一个]

当元素本身是一个列表时会发生什么? 执行其toString方法,因此:
[a, b, [c, d, e]]

在你的情况下:

[Shampoo, Oil, [Garnier, Bajaj]]

关注OP的另一个问题...... 当我们这样做时会发生什么:

Collection aCollection = //constructor call
aCollection.add(aCollection);

没有像堆栈溢出等错误。 它只会打印:

[..., (this Collection), ...]

这是三元运算符使用的目的in the source code