tub*_*bby -1 java whitespace arraylist data-structures
新创建的ArrayList不添加任何元素看起来就像是ArrayList添加了一个空字符串.
这让我觉得新创建的ArrayList即使不添加任何元素也会在其中添加默认的空string或元素.
package cracking;
import java.util.ArrayList;
public class Ask
{
public static void main(String[] args)
{
ArrayList<String> al = new ArrayList<String>();
System.out.println(al.size());//0
System.out.println(al);//[]
al.add("");
System.out.println(al.size());//1
System.out.println(al);//[]
}
}
Run Code Online (Sandbox Code Playgroud)
但是,ArrayList两个场景中的大小之间的差异使它们不一致,特别是因为ArrayList打印出来的两个看起来一样.
为了保持一致性,我觉得,两个中的任何一个都会很好:
ArrayList它使它看起来相同.ArrayList不应该允许打印出新创建的,它应该只打印NULL或其他东西,而不是[]像现在显示的那样显示你被toString实施所欺骗了AbstractCollection.看这里:
public String More ...toString() {
Iterator<E> i = iterator();
if (! i.hasNext())
return "[]";
StringBuilder sb = new StringBuilder();
sb.append('[');
for (;;) {
E e = i.next();
sb.append(e == this ? "(this Collection)" : e);
if (! i.hasNext())
return sb.append(']').toString();
sb.append(", ");
}
}
Run Code Online (Sandbox Code Playgroud)
您的集合大小为1,但它不打印任何内容,包括逗号字符,,因为它只有一个大小.尝试添加multilpe emptry字符串,您将更清楚地看到结果.
al.add("");
al.add("");
al.add("");
al.add("");
al.add("");
System.out.println(al); // Prints [, , , , ]
Run Code Online (Sandbox Code Playgroud)