Java中ArrayList集合

发布时间:2024年01月23日

?ArrayList集合:

? 1.默认初始化容量是10(底层先创建了一个长度为0的数组,当添加第一个元素的时候,初始化容量是10)

? 2.集合底层是一个Object数组

? 3.构造方法:

?????? new ArrayList();

?????? new ArrayList(20);

? 4.ArrayList集合的扩容

?????? 增长到原容量的1.5倍

?????? ArrayList集合底层是数组,怎么优化?

?????? 尽可能少的扩容,因为数组扩容效率比较低,建议在使用ArrayList集合的时候预估计元素的个数,给定一个初始化容量

?? 5.数组优点:

??????? 检索效率比较高(每个元素占用空间大小相同,内存地址是连续的,知道首元素内存地址,然后知道下标,通过数学表达式计算出元素的内存地址,所以检索效率比较高)

?? 6.数组缺点:

??????? 随机增删元素效率比较低

??????? 另外数组无法存储大数据量(很难找到一块非常大的连续的内存空间)

?? 7.向数组末尾添加元素,效率很高,不受影响

?? 8.这么多集合中,使用最多的集合是ArrayList集合,因为往数组末尾添加元素,效率是不受影响的。另外,我们检索/查找某个元素的操作比较多。

?? 9.ArrayList集合是非线程安全的(不是线程安全的集合)

?import java.util.ArrayList;

?import java.util.List;

?public class ArrayListTest01{

??? public static void main(String[] args){

?????? //默认初始化容量是10

????? //数组长度是10

?????? List list1 = new ArrayList();

?????? //集合的size方法是获取当前集合中元素的个数,不是获取集合中的容量

????? System.out.println(list1.size());?? //0

????? //指定初始化容量

???? //数组长度是20

????? List list2 = new ArrayList(20);

????? System.out.println(list2.size()); //0

?? }

?}

位运算符 >>

??? public class BinaryTest{

?????? public static void main(String[] args){

????????? //>>1? 二进制右移1位

???????? //>>2?? 二进制右移2位

??????? //10的二进制位是:00001010?? [10]

?????? //10的二进制右移1位是:00000101? [5]

???? System.out.println(10>>1);//右移1位就是除以2

?????

????? //二进制位左移1位

???? //10的二进制位是:00001010? [10]

??? //10的二进制位左移1位是:00010100? [20]

?? System.out.println(10<<1);

?? }

}

?public class ArrayListTest02{

???? public static void main(String[] args){

???????? //默认初始化容量是10

??????? List myList1 = new ArrayList();

????? //指定初始化容量是100

????? List myList2 = new ArrayList(100);

????? //创建一个HashSet集合

????? Collection c = new HashSet();

????? c.add(100);

????? c.add(200);

????? c.add(900);

????? c.add(50);

????? //通过这个构造方法就可以将HashSet集合转换成List集合

????? List myList3 = new ArrayList(c);

????? for(int i=0;i<myList.size();i++){

???????? System.out.println(myList3.get(i));

????? }

?? }

}

文章来源:https://blog.csdn.net/m0_74249744/article/details/135762417
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。