SingleLinkedList<E> newlist = new SingleLinkedList<E>();
newlist.head = temp.next;
temp.next= null;
return newlist
o / p是
public static void main(String args[]){
StringBuilder sb=new StringBuilder();
System.out.println(sb.capacity());
sb.append("abcabcabcabcabcabcab");
System.out.println(sb.length());
System.out.println(sb.capacity());
System.out.println("-----");
sb.append("abcabcabcabcabcabcab");
System.out.println(sb.length());
System.out.println(sb.capacity());
System.out.println("-----");
sb.trimToSize();
System.out.println(sb.capacity());
System.out.println(sb.length());
}
我的问题是,在第二行,容量应为36(20 + 16)。为什么它显示为34。
答案 0 :(得分:1)
看看Javadoc,我不认为StringBuilder
指明它会如何增长,但最有可能发生的是,一旦它必须增长它就会调用ensureCapacity(minimumCapacity)
记录:
新容量是更大的:
- minimumCapacity参数。
- 旧容量的两倍,再加上2.
所以你从最初的16开始到
最终为34。
但同样,这可能是特定于实现的,而不是你应该依赖的(或需要关心的)。