java 中将数组转换成list的方法

java 中将数组转换成list的方法

目录:
        1.将数组转成list的一般方法
        2.一般方法的弊端
        3.正确的解决方法
        4.代码实现
—————————————————————————
1.将数组转为list的一般方法

String[] myArray = { "Apple", "Banana", "Orange" }; 
List<String> myList = Arrays.asList(myArray);
//上面两个语句等价于下面一条语句
List<String> myList = Arrays.asList("Apple","Banana", "Orange");

JDK中源码对于该方法的说明:

/**
 *返回由指定数组支持的固定大小的列表。此方法作为基于数组和基于集合的API之间的桥梁,与 Collection.toArray()结合使用。返回的List是可序列化并实现RandomAccess接口。
 */ 
public static <T> List<T> asList(T... a) {
    return new ArrayList<>(a);
}

2.一般方法的弊端
《阿里巴巴Java 开发手册》对其的描述:
Arrays.asList()将数组转换为集合后,底层其实还是数组,《阿里巴巴Java 开发手册》对于这个方法有如下描述:
在这里插入图片描述
当使用集合的修改方法:add(),remove(),clear()方法时会抛出异常:

List myList = Arrays.asList(1, 2, 3);
myList.add(4);//运行时报错:UnsupportedOperationException
myList.remove(1);//运行时报错:UnsupportedOperationException
myList.clear();//运行时报错:UnsupportedOperationException
System.out.println(myList.getClass());//class java.util.Arrays$ArrayList

当我们看一下java.util.AbstractList的remove()方法,这样我们就明白为啥会抛出UnsupportedOperationException。

public E remove(int index) {
    throw new UnsupportedOperationException();
}

3.正确的解决方式
1)可以使用ArrayList类的构造方法将Arrays.asList(“a”, “b”, “c”)对象当做参数传进构造方法中。
2)可以使用JDK1.8中的stream方式实现

4.代码实现

    List<Integer> myList = Arrays.asList(1,2,3);
   
   		//直接调用抛出java.lang.UnsupportedOperationException
		myList.add(4);
        System.out.println(myList);//抛出异常
        
		//方法(1)
        List addList = new ArrayList(myList);
        addList.add(4);
        System.out.println(addList);//[1, 2, 3, 4]

		//方法(2)
        List<Integer> ss = myList.stream().collect(Collectors.toList());
        ss.add(4);
        System.out.println(ss);//[1, 2, 3, 4]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值