ArrayList 集合
public class ArrayListTest {
public static void main(String[] args) {
/** ArrayList 集合
* 1.底层是Object[]数组
* 2.默认初始化容量为10(刚创建出来容量为0,add第一个元素后扩容为10)
* 3.构造方法
* new ArrayList();
* new ArrayList(20);
* new ArrayList(hashSet);
* 4.ArrayList 集合的扩容
* int newCapacity = oldCapacity + (oldCapacity >> 1);
* 增长到原容量的1.5倍(Vector是2倍)
* ArrayList的底层是数组,怎么优化?
* 尽可能减少扩容,因为数组的扩容效率比较低,所以建议在使用ArrayList时,
* 给定一个合适的初始化容量,减少扩容次数.
* 5.数组的优点:
* 检索的效率比较高.(每个元素占用的空间大小相同,内存地址是连续的,知道首元素的地址,
* 然后知道下标,就可以通过数学表达式计算出其他内存地址,所以检索效率高)
* 6.数组的缺点:
* 指定位置增删元素效率低(非末尾)
* 数组无法存储大数据量(因为很难找到一块非常巨大的连续的内存空间)
* 7.向数组末尾增删元素效率很高,不受影响
* 8.这么多的集合,我们最常用的集合是哪个?
* ArrayList集合,因为我们通常是往数组末尾添加元素,效率不受影响
* 另外,我们查找元素的操作比较多
* 9.ArrayList是非线程安全的 可通过Collections.synchronizedList(ArrayList list)变成线程安全的.
*/
//默认0,添加第一个元素时,指定容量为10
List myList1 = new ArrayList();
//指定容量
List myList2 = new ArrayList(100);
//变成线程安全
Collections.synchronizedList(myList2);
Set hashSet = new HashSet();
hashSet.add(100);
hashSet.add(200);
hashSet.add(150);
hashSet.add(50);
//将HashSet集合转成ArrayList集合
List myList3 = new ArrayList(hashSet);
for (int i = 0; i < myList3.size(); i++) {
System.out.println(myList3.get(i));//50 100 150 200
}
}
}
我成功因为我志在成功
浙公网安备 33010602011771号