ArrayList和Array之间的转换

本文详细介绍了如何在Java中实现ArrayList与Array之间的互相转换。包括使用ArrayList的toArray方法将ArrayList转换为Array,以及使用Arrays的asList方法将Array转换为ArrayList,并解决了基本数据类型转换时出现的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. ArrayListArray

    (1):使用ArrayListtoArray方法。

        1)当ArrayList中存放的是引用类型时(例如String),成功

        /**

         * 使用了ArrayListtoArray方法 ,ArrayList里存放的是String(引用类型)

         */

        @Test

        public void list2Array1() {

            ArrayList<String> arrayList = new ArrayList<String>();

            arrayList.add("1");

            arrayList.add("2");

            arrayList.add("3");

     

            Object[] array = arrayList.toArray(new String[3]);

     

            for (Object o : array) {

                System.out.println(o);

            }

        }

    输出为:

    [1, 2, 3]

     

        2) ArrayList中存放的是基本数据类型时(例如int),成功

    /**

         * 使用了ArrayListtoArray方法 , ArrayList里存放的是int(基本数据类型)

         */

        @Test

        public void list2Array2() {

            ArrayList<Integer> arrayList = new ArrayList<Integer>();

            arrayList.add(1);

            arrayList.add(2);

            arrayList.add(3);

     

            Object[] array = arrayList.toArray();

     

            System.out.println(Arrays.toString(array));

        }

    输出为:

    [1, 2, 3]

  2. ArrayArrayList

    (1):使用ArraysasList方法。

    1)当Array中存放的是引用类型时(例如String),成功

    /**

    * 使用ArraysasList方法,Array中存放的String(引用类型)

    */

    @Test

    public void array2List1() {

        String[] stringArray = new String[] { "1", "2", "3" };

        List<String> list = Arrays.asList(stringArray);

     

        System.out.println(list);

    }

    输出为:

    [1, 2, 3]

     

        2) Array中存放的是基本数据类型时(例如int),不成功

    /**

         * 使用ArraysasList方法,Array中存放int(基本类型)

         */

        @Test

        public void array2List2() {

            int[] intArray = new int[] { 1, 2, 3 };

            List<int[]> intList = Arrays.asList(intArray);

     

            System.out.println(intList.size());

            for (int[] is : intList) {

                System.out.println(Arrays.toString(is));

            }

        }

    输出为:

    [[I@14514713]

    List的长度为 : 1

    [1, 2, 3]

     

        这个问题解决的方法就是将int[]换成Integer[],这样内容就成了对象数组(即引用类型)。

    /**

         * 使用ArraysasList方法,Array中存放int(基本类型)

         */

        @Test

        public void array2List3() {

            Integer[] integerArray = { 1, 2, 3 };

            List<Integer> intList = Arrays.asList(integerArray);

     

            System.out.println(intList);

            System.out.println("List的长度为 : " + intList.size());

            for (Integer is : intList) {

                System.out.println(is);

            }

        }

    输出为:

    [1, 2, 3]

    List的长度为 : 3

    1

    2

    3

     

     

    参考文献:

    java中数组与List相互转换的方法

    基本数据类型数组转换列表显的有些力不从心

转载于:https://www.cnblogs.com/huangwenjie/p/5640626.html

### JavaArrayList Array 的对比 #### 数据结构定义 在 Java 中,`Array` 是一种基本的数据存储形式,而 `ArrayList` 则是基于数组实现的一种动态集合类。`Array` 需要在创建时指定长度,并且其大小不可变[^4]。相比之下,`ArrayList` 提供了一种更灵活的方式管理数据集,允许动态调整容量。 #### 类型支持 `Array` 可以保存原始类型(如 `int`, `char` 等),也可以保存对象类型的引用。然而,`ArrayList` 仅能保存对象类型的引用,无法直接存储原始类型。为了弥补这一不足,Java 提供了自动装箱/拆箱机制来处理原始类型到对应包装器类的转换[^2]。 #### 大小灵活性 `Array` 的尺寸一旦设定便不可更改。如果尝试向已满的数组中添加新元素,则会抛出异常或者需要手动复制到更大的数组中完成扩展。与此不同的是,当 `ArrayList` 达到当前容量上限时,它能够自动增加内部数组的大小以容纳更多项[^1]。 #### 性能考量 对于频繁访问操作而言,由于底层均采用连续内存布局的缘故,两者表现相似——随机存取时间复杂度均为 O(1)[^4]。但在涉及大量增删动作的情况下,尤其是中间位置上的变动,`ArrayList` 可能因为每次扩容都需要重新分配空间以及移动现有记录而导致效率下降;而对于固定规模的任务来说,原生 `Array` 往往具备更高的执行速度与更低的空间开销。 以下是将 `Array` 转换为 `ArrayList` 并再次还原成 `Array` 的简单示例: ```java import java.util.ArrayList; import java.util.Arrays; public class Test { public static void main(String[] args) { String[] array = {"A", "B", "C"}; // 将数组转化为列表 ArrayList<String> list = new ArrayList<>(Arrays.asList(array)); System.out.println("List after conversion: " + list); // 修改列表中的某个值 if (!list.isEmpty()) { list.set(0, "Modified"); } System.out.println("Updated List: " + list); // 把列表再转回数组 String[] newArray = list.toArray(new String[0]); System.out.println("New Array content: " + Arrays.toString(newArray)); } } ``` 此代码片段展示了如何利用 `Arrays.asList()` 方法快速构建一个初始状态固定的列表实例,随后通过新建一个可变版本 (`new ArrayList<>`) 来获得完全可控的操作权限^3]。 综上所述,在实际开发过程中应依据具体需求权衡选用合适的数据容器形式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值