ITPub博客

首页 > IT职业 > IT图书 > Arrays.asList()是个坑

Arrays.asList()是个坑

IT图书 作者:gamebus 时间:2021-09-09 09:11:27 0 删除 编辑

在java语言中,把数组转换成List集合,有个很方便的方法就是 List list = Arrays.asList("a","b","c");

但你可能不知道这样得到的List它的长度是不能改变的。当你向这个List添加或删除一个元素时(例如 list.add("d");)程序就会抛出异常(java.lang.UnsupportedOperationException)。怎么会这样?!只需要看看asList()方法是怎么实现的就行了。

public static List asList(T... a) {
return new ArrayList(a);
}

当你看到这段代码时可能觉得没啥问题啊,不就是返回了一个ArrayList对象吗?问题就出在这里。这个ArrayList不是java.util包下的,而是java.util.Arrays.ArrayList,显然它是Arrays类自己定义的一个内部类!这个内部类没有实现add()、remove()方法,而是直接使用它的父类AbstractList的相应方法。而AbstractList中的add()和remove()是直接抛出java.lang.UnsupportedOperationException异常的!

总结一下吧,如果你的List只是用来遍历,就用Arrays.asList()吧!如果你的List还要添加或删除元素,还是乖乖地new一个java.util.ArrayList,然后一个一个的添加元素吧!

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4687/viewspace-2808504/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 数据处理
请登录后发表评论 登录
全部评论

注册时间:2019-07-10

  • 博文量
    155
  • 访问量
    13187