美文网首页Java 杂谈程序员
Java从入门到放弃:慎用Arrays.asList(T...a

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

作者: Hsinwong | 来源:发表于2018-03-21 16:17 被阅读0次
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));

相关文章

网友评论

    本文标题:Java从入门到放弃:慎用Arrays.asList(T...a

    本文链接:https://www.haomeiwen.com/subject/mibgqftx.html