[Java 基础] 深入理解List的toArray()方法和toArray(T[] a)方法

本文详细讲解了Java List接口的toArray()和toArray(T[] a)方法的区别,包括返回数组的类型、数组对象的独立性以及对元素的修改影响。重点阐述了两种方法底层工作机制,以及在实际开发中的应用场景和注意事项。

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

深入理解List的toArray()方法和toArray(T[] a)方法
这两个方法都是将列表List中的元素转导出为数组,不同的是,toArray()方法导出的是Object类型数组,而toArray[T[] a]方法导出的是指定类型的数组。

下面是两个方法的申明及说明,摘自Java8的API文档。

toArray()方法在这里插入图片描述
会返回List中所有元素构成的数组,并且数组类型是Object[]。还要注意一点就是,返回的数组是新生成的一个数组,

也就是说,多次运行toArray()方法会获得不同的数组对象(可以理解存储的数组对象内存地址不一样),但是这些数组对象中内容一样的。
也就是说,toArray()返回的数组是安全的,你可以对它进行任意的修改,其原因就是List不会去维持一个对该返回的数组的引用。

下面是对基本数据类型:Integer测试

public static void main(String[] args) {
   
    List<Integer> list = new ArrayList<>();
    list.add(1);
    list.add(2);
    Object[] objects1 = list.toArray();
    Object[] objects2 = list.toArray();
    //比较二个新数组
    System.out.println("objects1 == objects2 : "+(objects1 == objects2));
    //对object1 对象的数组进行修改 不会影响到其他  引用的数组
    objects1[1]=4;
    //输出修改后的 数组
    System.out.println("show objects1: "+ Arrays.toString(objects1));
    //输出引用的数组
    System.out.println("show objects2: "+ Arrays.toString(objects2));
    //输出原来的数组
    System.out.println("show list: "+list);
}

输出结果:

objects1 == objects2 : false
show objects1: [1, 4]
show objects2: [1, 2]
show list: [1, 2]

可以看出确实toArray()返回的是一个新的数组对象地址,并且多次执行toArray()方法获得的是不同的数组对象,并且对其中一个数组进行修改,不会影响到其他toArray()方法获得的数组,并且也不会影响到list本身原来存储的元素值。


当我们list 换为其他类型对象的时候,也不影响

private static class People{
   
    String name;
    public People(String name){
   
        this.name
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是汤圆丫

怎么 给1分?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值