数组和集合的相互转

这篇博客介绍了在Java中如何将数组转换为集合以及将集合转换为数组的方法。对于非基本数据类型,可以使用Arrays.asList()直接转换,但要注意得到的列表是固定大小的。若需要可变列表,需进一步转换。对于基本数据类型,需要手动包装。集合转数组时,可通过toArray()方法,并注意传入数组的大小。此外,还提到了基本数据类型数组与包装类数组之间的转换。
String []str={"1","2","3"};
 List<String> list = Arrays.asList(str);
        for (String s : list) {
            System.out.println(s);
        }
String[] str2 = (String[]) list.toArray();
        for (String s : str2) {
            System.out.println(s);
        }

在Java中,数组和集合之间的转换是相对常见的操作。以下是如何执行这些转换的示例:

数组转集合

对于非基本数据类型数组,你可以使用Arrays.asList()方法直接转换为一个固定大小的集合。

String[] array = {"A", "B", "C"};
List<String> list = Arrays.asList(array);

这里需要注意的是,通过Arrays.asList()方法转换得到的列表是固定大小的,对其进行添加或删除操作会抛出UnsupportedOperationException

如果你需要一个可变的列表,可以这样做:

String[] array = {"A", "B", "C"};
List<String> list = new ArrayList<>(Arrays.asList(array));

对于基本数据类型数组,由于Arrays.asList()不能直接作用于基本数据类型数组,需要进行手动的包装转换。

int[] intArray = {1, 2, 3};
List<Integer> intList = new ArrayList<>();
for (int i : intArray) {
    intList.add(i);
}

集合转数组

如果你想将集合转换为数组,可以使用集合的toArray()方法。

将一个List转换为数组:

List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");

// To an array of String
String[] array = list.toArray(new String[0]);

注意,在toArray()方法中传入的数组如果大小小于集合的大小,那么toArray()方法会分配一个新的数组空间来存储集合数据;如果传入的数组大小大于或等于集合的大小,则会在传入的数组中存储集合数据,并且如果传入数组有剩余空间,数组后面的元素将会被设置为null

对于集合中包含基本数据类型包装类的情况,不能直接转换成基本数据类型的数组,而需要转换为对应的包装类数组。如果需要转换为基本数据类型数组,就需要手动解包装。

List<Integer> intList = new ArrayList<>();
intList.add(1);
intList.add(2);
intList.add(3);

// To an array of Integer
Integer[] integerArray = intList.toArray(new Integer[0]);

// To an array of int (manually unboxing)
int[] intArray = new int[intList.size()];
for (int i = 0; i < intList.size(); i++) {
    intArray[i] = intList.get(i);
}

通过这些示例,你可以看出数组和集合之间的转换是简单的,但需要注意它们之间的差异,特别是在处理基本数据类型时。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

你不懂、、、

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值