使用Arrays.asList()需要注意的点

 首先,该方法是将数组转化为list。有以下几点需要注意:

  (1)该方法不适用于基本数据类型(byte,short,int,long,float,double,boolean)

  (2)该方法将数组与列表链接起来,当更新其中之一时,另一个自动更新

  (3)不支持add和remove方法

import java.util.Arrays;
import java.util.List;

public class ArraysAsList {
	public static void main(String[] args) {
	    /**
	      * 基本数据类型 char  int  boolean  double  
            */ 
        char[] a = { 'a', 'b' };  
        int[] b = { 1, 23, 6, 9, 36, 68 }; 
        boolean[] c = { true, false };  
        double[] d = { 1.1, 2.3, 5.6, 6.8 };  
        System.out.println("char----->" + Arrays.asList(a));      
        System.out.println("int---->" + Arrays.asList(b));  
        System.out.println("boolean---->" + Arrays.asList(c));  
        System.out.println("double---->" + Arrays.asList(d));  
        
        /**
         * 包装数据类型    Character  Integer  Boolean  Double
         */
        Character[] m = { 'a', 'b' };  
        Integer[] n = { 1, 23, 6, 9, 36, 68 }; 
        Boolean[] s = { true, false };  
        Double[] t = { 1.1, 2.3, 5.6, 6.8}; 
        System.out.println("Character----->" + Arrays.asList(m));      
        System.out.println("Integer---->" + Arrays.asList(n));  
        System.out.println("Boolean---->" + Arrays.asList(s));  
        System.out.println("Double---->" + Arrays.asList(t));  
        
       /**
        * 引用数据类型     String  
        */
        String k[] = { "至尊宝", "紫霞仙子", "千年之狐" };   
        System.out.println("String---->" + Arrays.asList(k));  
	}
}
输出结果:    
char----->[[C@5655d1b4]
int---->[[I@1c3aacb4]
boolean---->[[Z@8bf223]
double---->[[D@51ef4970]
Character----->[a, b]
Integer---->[1, 23, 6, 9, 36, 68]
Boolean---->[true, false]
Double---->[1.1, 2.3, 5.6, 6.8]
String---->[至尊宝, 紫霞仙子, 千年之狐]


Arrays.asList() 转换的list 在添加或者删除的时候会报错

  String k[] = { "至尊宝", "紫霞仙子", "千年之狐" };   
        List<String> list = Arrays.asList(k);
        list.add("ss");     //java.lang.UnsupportedOperationException 
输出结果:
Exception in thread "main" java.lang.UnsupportedOperationException
	at java.util.AbstractList.add(AbstractList.java:148)
	at java.util.AbstractList.add(AbstractList.java:108)
	at com.baidu.ArraysAsList.main(ArraysAsList.java:42)
总结: 
         此集合是根据k[]获得的,长度已经固定,不能改变; 
         在使用Arrays.asList()后调用add,remove这些method时出现  java.lang.UnsupportedOperationException异常。 
         这是由于Arrays.asList() 返回java.util.Arrays.ArrayList, 而不是java.util.ArrayList。 
         Arrays.ArrayList和util.ArrayList都是继承AbstractList,
         remove,add等 method在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。 
         util.ArrayList override这些method来对list进行操作,但是Arrays.ArrayList没有override remove(),add()等, 
         所以throw UnsupportedOperationException。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值