数组与集合相互转换

数组与集合相互转化通常我们用两种方式:

  1. 手动转化
  2. 使用集合或数组自带的方法转化

数组转集合

手动转化

List<String> list= new ArrayList<>();
String[] array = new String[] {"java", "html", "js"};
for (int i = 0; i < array.length; i++) {
    list.add(array[i]);
}

方法转化

public static List asList(T… a)
返回由指定数组支持的固定大小的列表。 (将返回的列表更改为“写入数组”。)该方法作为基于数组和基于集合的API之间的桥梁,与Collection.toArray()相结合 。 返回的列表是可序列化的,并实现RandomAccess 。
此方法还提供了一种方便的方式来创建一个初始化为包含几个元素的固定大小的列表:

List stooges = Arrays.asList(“Larry”, “Moe”, “Curly”);
参数类型
T - 数组中对象的类
参数
a - 列表将被支持的数组
结果
指定数组的列表视图

String[] array = new String[] {"java", "html", "js"};
List<String> list = Arrays.asList(array);

集合转数组

手动转化

List<String> list = new ArrayList<>();
list.add("hello");
list.add("hi");
list.add("nihao");
String[] array = new String[list.size()];
for (int i = 0; i < list.size(); i++) {
    array[i] = list.get(i);
}

方法转化

T[] toArray(T[] a)
返回包含此集合中所有元素的数组; 返回的数组的运行时类型是指定数组的运行时类型。 如果集合适合指定的数组,则返回其中。 否则,将为指定数组的运行时类型和此集合的大小分配一个新数组。
如果此集合适合指定的数组,并具有剩余空间(即,该数组具有比此集合更多的元素),则紧跟在集合结束后的数组中的元素将设置为null 。 ( 仅当调用者知道此集合不包含任何null元素时,这才有助于确定此集合的长度。)

如果此集合对其迭代器返回的元素的顺序做出任何保证,则此方法必须以相同的顺序返回元素。

像toArray()方法一样,此方法充当基于数组和基于集合的API之间的桥梁。 此外,该方法允许精确地控制输出阵列的运行时类型,并且在某些情况下可以用于节省分配成本。

假设x是一个已知只包含字符串的集合。 以下代码可用于将集合转储到新分配的数组中: String :

String[] y = x.toArray(new String[0]);
请注意, toArray(new Object[0])的功能与toArray()相同 。
参数类型
T - 包含集合的数组的运行时类型
参数
a - 要存储此集合的元素的数组,如果它足够大; 否则,为此目的分配相同运行时类型的新数组。
结果
一个包含此集合中所有元素的数组
异常
ArrayStoreException - 如果指定数组的运行时类型不是此集合中每个元素的运行时类型的超类型
NullPointerException - 如果指定的数组为空

List<String> list = new ArrayList<>();
list.add("hello");
list.add("hi");
list.add("nihao");
//Integer[] array=new Integer[list.size()];
//list.toArray(array);
String[] array = list.toArray(new String[0]);



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值