Java从入门到放弃:慎用Arrays.asList(T...a)

Java从入门到放弃

为什么要慎用 Arrays.asList(T... a):

  • 该方法返回定长的 List,不支持 add 和 remove 操作
  • 该方法返回的 List 与传入数组是映射关系(视图):set/get 操作直接作用于数组;直接修改数组,list 也会改变

替代方案:

// 方案一
// List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));
Integer[] arr = {1, 2, 3};
List<Integer> list = new ArrayList<>(Arrays.asList(arr));

// 方案二
List<Integer> list = new ArrayList<>();
// Collections.addAll(list, 1, 2, 3);
Integer[] arr = {1, 2, 3};
Collections.addAll(list, arr);

// 方案三(需 JDK8)
// List<Integer> list = Arrays.stream(new Integer[]{1, 2, 3}).collect(Collectors.toList());
int[] arr = {1, 2, 3};
List<Integer> list = Arrays.stream(arr).boxed().collect(Collectors.toList());

// 方案四(需 Guava)
// List<Integer> list = Lists.newArrayList(1, 2, 3);
int[] arr = {1, 2, 3};
List<Integer> list = Lists.newArrayList(Ints.asList(arr));

推荐阅读更多精彩内容

  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 991评论 0 4
  • 传送门 解读阿里Java开发手册(v1.1.1) - 异常日志 前言 阿里Java开发手册谈不上圣经,但确实是大量...
    kelgon阅读 3,042评论 4 50
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 26,427评论 17 394
  • 概述 Java集合框架由Java类库的一系列接口、抽象类以及具体实现类组成。我们这里所说的集合就是把一组对象组织到...
    absfree阅读 895评论 0 10
  • 今天下午,我和妹妹正在玩,奶奶告诉我们说外面下雪了,我一听,高兴极了。下了雪我就可以堆雪人了!我们赶紧把窗户旁边看...
    段智耀阅读 40评论 0 0