我已经读过,当我们删除一个Objectfrom时ArrayList,它的大小不会减少.
我尝试了下面的代码来测试它,但发现大小减少了.任何人都可以纠正或向我解释这个吗?
package collections;
import java.util.ArrayList;
import java.util.List;
public class ArrayListExample {
public static void main(String[] args) {
//Creating list of Books
List<Book> list=new ArrayList<Book>();
//Creating Books
Book b1=new Book(101,"Let us C","Yashwant Kanetkar","BPB",8);
Book b2=new Book(102,"Data Communications & Networking","Forouzan","Mc Graw Hill",4);
Book b3=new Book(103,"Operating System","Galvin","Wiley",6);
//Adding Books to list
list.clear();
list.add(b1);
list.add(b2);
list.add(b3);
list.contains(b3);
int size= list.size();
System.out.println(size);
list.remove(b3);
int size1= list.size();
System.out.println(size1);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
您可能已经读过ArrayList使用的后备数组的大小不会减少,这是真的.如果在ArrayList中放入100个元素,则它将具有至少100个大小的后备数组.即使在remove()元素之后,该数组的大小也保持不变.为了释放该内存,该trimToSize()方法可用:
public void trimToSize()
Trims the capacity of this ArrayList instance to be the list's current size. An application can use this operation to minimize the storage of an ArrayList instance.
Run Code Online (Sandbox Code Playgroud)
来自https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#trimToSize()