为什么这个 ArrayList 'add' 操作没有添加新元素?

Why does this ArrayList 'add' operation not add the new element?

当我 运行 这段代码时,我希望将具有一个元素(字符串“Hi”)的 ArrayList 添加到 ArrayList 的第 0 个索引处。当我打印第 0 个索引处的元素时,我没有得到“Hi”,而是得到 true。我不知道如何解释这个结果。

package dataTypes;

import java.util.ArrayList;

public class DataTypes {

    public static void main(String[] args) {
        ArrayList myUnsafeArrayList =  new ArrayList();
        myUnsafeArrayList.add("hello");
        myUnsafeArrayList.add(100);      
        myUnsafeArrayList.add("end");
        System.out.println("Before add: " + myUnsafeArrayList.get(0));
        
        myUnsafeArrayList.add(0, ((new ArrayList()).add("Hi")));
        System.out.println("After add: " + myUnsafeArrayList.get(0));
    }
}

这是我得到的输出:

Before add: hello
After add: true

这就是您要查找的内容:

public class DataTypes {

    public static void main(String[] args) {
        ArrayList myUnsafeArrayList =  new ArrayList();
        myUnsafeArrayList.add("hello");
        myUnsafeArrayList.add(100);      
        myUnsafeArrayList.add("end");
        System.out.println("Before add: " + myUnsafeArrayList.get(0));
        
        myUnsafeArrayList.add(0, Arrays.asList("Hi"));
        System.out.println("After add: " + myUnsafeArrayList.get(0));
    }
}

原因是 myUnsafeArrayList.add(0, ((new ArrayList()).add("Hi"))); 你说的是“将 ((new ArrayList()).add("Hi")) 的结果添加到 myUnsafeArrayList 的索引 0”。如果您检查 reference documentation add(E element) returns a boolean 这就是为什么您实际上得到 true 而不是 Hi.