• Java中[]数组和ArrayList的区别


    数组[]

    其容量固定且无法动态改变
    最高效

    ArrayList

    容量可动态增长
    效率相对低一些

    两者不同

    如果无法确定数组大小 建议使用 ArrayList

    数组[]使用
    创建new []对象
    nums[index] = 添加
    = nums[index] 获取

    ArrayList使用
    创建ArrayList对象
    使用add()方法 添加对象
    使用get(index)获取值

    对于ArrayList来说,
    当执行Add、AddRange、Insert、InsertRange等添加元素的方法,都会检查内部数组的容量是否不够了,如果是,它就会以当前容量的两倍来重新构建一个数组,将旧元素Copy到新数组中,然后丢弃旧数组,在这个临界点的扩容操作,应该来说是比较影响效率的。

    ArrayList是Array的复杂版本
    ArrayList内部封装了一个Object类型的数组,从一般的意义来说,它和数组没有本质的差别,甚至于ArrayList的许多方法,如Index、IndexOf、Contains、Sort等都是在内部数组的基础上直接调用Array的对应方法。

    两者转换

    字符串举例子

    import java.util.ArrayList;
    
    public class Test {
        public static void main(String[] args) {
            ArrayList<String> list = new ArrayList<>();
            list.add("java1");
            list.add("java2");
            list.add("java3");
            int size = list.size();
    
            String[] temp = list.toArray(new String[size]);
    
            for (String s: temp){
                System.out.print(s + " "); // java1 java2 java3 
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    java1 java2 java3 
    
    • 1

    整数转换

    
    import java.util.ArrayList;
    
    public class Test {
        public static void main(String[] args) {
            ArrayList<Integer> list = new ArrayList<>();
            list.add(1);
            list.add(2);
            list.add(3);
            int size = list.size();
            Integer[] b = new Integer[size];
    
            b = list.toArray(b);
            for (int s: b){
                System.out.print(s + " "); //1 2 3 
            }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    [] 转换为ArrayList
    使用Arrays.asList()

    import java.util.ArrayList;
    import java.util.Arrays;
    
    public class Test {
        public static void main(String[] args) {
            String[] array = {"java01", "java02", "java03"};
            ArrayList<String> arrayList = new ArrayList<>(Arrays.asList(array));
    
            System.out.println(arrayList); // [java01, java02, java03]
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  • 相关阅读:
    shell脚本 重试 分文件 多进程
    《HTML+CSS+JavaScript》之第18章 图片样式
    本地电脑搭建web服务器、个人博客网站并发布公网访问 【无公网IP】(1)
    Docker CMD和ENTRYPOINT的区别
    程序化交易(二)level2行情数据源接入
    数据结构:二叉搜索树
    2. Vue3 Composition API
    这个为什么没有渲染就变成了这样了,有什么办法可以变回来吗?😭😭
    Git管理远程仓库以及 git push 中遇到的问题
    数据结构--堆
  • 原文地址:https://blog.csdn.net/weixin_46969441/article/details/125940564