黑马程序员_日记66_集合转数组

本文详细介绍了如何在Java中将集合转换为数组,并探讨了不同情况下的数组长度设定及其影响。通过实例演示了如何根据集合大小创建合适的数组,以及转换过程中需要注意的问题。

 ——- android培训java培训、期待与您交流! ———-

Object[] toArray()
返回包含此 collection 中所有元素的数组。
T[]
toArray(T[] a)
返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。

import java.util.Collection;
import java.util.ArrayList;
import java.util.Arrays;
public class CollectionToArrayDemo
{
    public static void sop(Object obj)
    {
        System.out.println(obj);
    }
    public static void main(String[] args)
    {
        //1 创建存放Integer的集合
        ArrayList<Integer> arrList = new ArrayList<Integer>(); 
        //2 添加Integer
        arrList.add(new Integer(3));
        arrList.add(new Integer(2));
        arrList.add(new Integer(6));
        arrList.add(new Integer(1));

        //3 集合转数组
        //Integer[] arr = arrList.toArray();
        //错误: 不兼容的类型: Object[]无法转换为Integer[]

        Integer[] arr = arrList.toArray(new Integer[arrList.size()]);
        //Integer[] arr = arrList.toArray(new Integer[2]);//[3, 2, 6, 1]
        //Integer[] arr = arrList.toArray(new Integer[3]);//[3, 2, 6, 1]
        //Integer[] arr = arrList.toArray(new Integer[5]);//[3, 2, 6, 1, null]
        //Integer[] arr = arrList.toArray(new Integer[7]);//[3, 2, 6, 1, null, null, null]

        //4 打印数组
        sop(Arrays.toString(arr));
        //打印结果[3, 2, 6, 1]
    }

}

集合转数组结果
集合转数组结果

Integer[] arr = arrList.toArray(new Integer[arrList.size()]);//[3, 2, 6, 1]
//Integer[] arr = arrList.toArray(new Integer[2]);//[3, 2, 6, 1]
//Integer[] arr = arrList.toArray(new Integer[3]);//[3, 2, 6, 1]
//Integer[] arr = arrList.toArray(new Integer[5]);//[3, 2, 6, 1, null]
//Integer[] arr = arrList.toArray(new Integer[7]);//[3, 2, 6, 1, null, null, null]

综上可知,
当数组初始化长度小于等于指定数组size时候,数组长度会自动变为size;
当数组初始化长度大于指定数组size时候,就使用传进来的那个数组;

    1,指定类型的数组到底要定义多长呢?
    当指定类型的数组长度小于了集合的size,那么该方法内部会创建一个新的数组。长度为集合的size。
    当指定类型的数组长度大于了集合的size,就不会新创建了数组。而是使用传递进来的数组。
    所以创建一个刚刚好的数组最优。


    2,为什么要将集合变数组?
    为了限定对元素的操作。不需要进行增删了。
在 Java 中,将集合(如 `List`、`Set`)换为数组有几种常见方法,具体取决于需求和使用场景。以下是几种推荐的方式: ### 使用 `toArray()` 方法(无参) 该方法返回一个 `Object[]` 类型的数组,适用于大多数情况: ```java List<String> list = Arrays.asList("a", "b", "c"); Object[] array = list.toArray(); ``` 此方法简单直接,但返回的数组类型为 `Object[]`,需要进行类型换才能使用具体的元素类型[^1]。 ### 使用 `toArray()` 方法(带参数) 为了获得特定类型的数组,可以传递一个目标类型的数组作为参数: ```java List<String> list = Arrays.asList("a", "b", "c"); String[] array = list.toArray(new String[0]); ``` 这种方式能够直接获得指定类型的数组,避免了类型换的问题,推荐用于需要明确数组类型的情况[^3]。 ### 使用 Stream API 换 如果使用的是 Java 8 或更高版本,可以通过 Stream API 实现换: ```java List<Integer> list = Arrays.asList(2, 4, 6, 8, 10); Integer[] array = list.stream().toArray(Integer[]::new); ``` 这种方式代码较为简洁,同时能够充分利用 Stream API 的强大功能。 ### 使用 `Arrays.asList()` 方法(数组集合) 虽然这不是集合数组的直接方法,但值得一提的是,`Arrays.asList()` 常用于将数组换为列表: ```java Integer[] arr = {2, 4, 6, 8, 10}; List<Integer> list = Arrays.asList(arr); ``` 此方法常用于初始化集合,但需要注意返回的列表大小固定,不能添加或删除元素[^3]。 ### 总结 - **`toArray()` 无参方法**:适用于简单的换,返回 `Object[]`。 - **`toArray()` 带参数方法**:推荐用于获取特定类型的数组。 - **Stream API**:适用于 Java 8+,代码简洁且功能强大。 - **性能考虑**:对于大型集合,推荐使用 `toArray()` 带参数的方法,因为其性能通常优于 Stream API。 根据具体需求选择合适的方法可以提高代码的可读性和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值