我无法理解下面的代码.clear方法删除分配给"al"的所有元素吧?然后ArrayList al接收字符串Str2的值,alal接收Str3的值.
那么如果仅使用Str3分配alal,那么输出如何如下呢?有人可以解释一下吗?非常感谢
OUTPUT:
[String 2]
[[String 2],String 3]
public static void main(String[] args){
String Str1 = "String 1";
String Str2 = "String 2";
String Str3 = "String 3";
ArrayList al = new ArrayList();
ArrayList alal = new ArrayList();
al.add(Str1);
alal.add(al);
al.clear();
al.add(Str2);
alal.add(Str3);
System.out.println(al);
System.out.println(alal);
}
Run Code Online (Sandbox Code Playgroud)
您使用的是raw ArrayList,因此您可以Object在列表中存储任何类型.需要注意的是你存储al里面alal,这意味着存储的基准al为alal,从不是值al成alal.
更深入的解释:
al.add(Str1); //al -> [String 1]
alal.add(al); //alal -> [ [String 1] ]
al.clear(); //al -> [] , alal -> [ [] ]
al.add(Str2); // al -> [String 2] , alal -> [ [String 2] ]
alal.add(Str3); //alal -> [ [String 2], String 3]
System.out.println(al);
System.out.println(alal);
Run Code Online (Sandbox Code Playgroud)
来自您给定代码的一些建议:
al并且alal可能看起来很适合一个基本的例子,但提供有助于代码可读性的名称会更好.ArraListCollectionArrayList<String> alalStringal给alal,请使用ArrayList#addAll方法.List为ArrayList.最好习惯编程到接口而不是直接类实现: