美文网首页
坑之Arrays.asList

坑之Arrays.asList

作者: 手打丸子 | 来源:发表于2020-03-29 21:07 被阅读0次

我写了下面这么段代码

        List<Integer> il =  Arrays.asList(-10,-8,-6,0,1,2,4,6,7,8);
        List<Integer> il1 =  new ArrayList<>(il);
        System.out.println(il.add(3));

结果就报错了,马有失蹄,人有失手啊,确实是我基础差了
看看asList的源码

    @SafeVarargs
    @SuppressWarnings("varargs")
    public static <T> List<T> asList(T... a) {
        return new ArrayList<>(a);
    }

我以为返回了个new ArrayList
看看调试信息


image.png

其实这里返回的是个内部类

java.util.Arrays.ArrayList

和我们常用的

java.util.ArrayList

压根不是一个

起因:
为啥发现这个
在做一道leetcode的时候:3Sum
写了这么一段代码

class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
        HashSet<List<Integer>> result = new HashSet<>();
        Arrays.sort(nums);
        int len =  nums.length;
        for (int i = 0; i < len - 2 && nums[i] <= 0; i++) {
            int low =  i+1;
            int high = len-1;
            for (; low < high; ) {
                int sum = nums[low]+nums[high];
                if (sum == -nums[i]) {
//!!!!!!!!!!!!!!!!!就是这里,就是这里,就是这里,就是这里,就是这里,就是这里,就是这里,就是这里,
                    result.add(Arrays.asList(nums[i], nums[low], nums[high]));
                    low++;
                    high--;
                }else
                if (sum < -nums[i]) {
                    low++;
                }else  {
                    high--;
                }
            }

        }
        return new ArrayList<>(result);
    }
}

看上去还不错,但是运行速度却很慢
后来把

result.add(Arrays.asList(nums[i], nums[low], nums[high]));

改成

result.add(new ArrayList<Integer>(Arrays.asList(nums[i], nums[low], nums[high])));

就好多了

相关文章

  • 坑之Arrays.asList

    我写了下面这么段代码 结果就报错了,马有失蹄,人有失手啊,确实是我基础差了看看asList的源码 我以为返回了个n...

  • 为什么要谨慎使用Arrays.asList、ArrayList的

    1. 使用Arrays.asList的注意事项 1.1 可能会踩的坑 先来看下Arrays.asList的使用: ...

  • 为什么要谨慎使用Arrays.asList、ArrayList的

    1. 使用Arrays.asList的注意事项 1.1 可能会踩的坑 先来看下Arrays.asList的使用: ...

  • Arrays.asList的坑

    碰到这样一个问题使用Arrays.asList返回的ArrayList无法进行add,remove操作,测试一下原...

  • Arrays.asList的坑

    简介: 将一个数组转换为 List 以便进行更丰富的操作 坑 坑一: 将原生数据类型数据的数组作为参数 尝试使用I...

  • Java踩坑记系列之Arrays.AsList

    java.util.Arrays的asList方法可以方便的将数组转化为集合,我们平时开发在初始化ArrayLis...

  • Arrays.asList()是个坑

    在java语言中,把数组转换成List集合,有个很方便的方法就是 如果你之前没有对返回来 list 进行操作(ad...

  • Arrays.asList()方法的坑

    需求:快速将数组转化为集合,并且还能继续往里面添加元素错误方法:TestAsList.java 程序报错: 为什么...

  • Arrays.asList 有坑嘛?

    先来看下 阿里巴巴 Java 开发手册中: 【强制】使用工具类 Arrays.asList()把数组转换成集合时...

  • List的10个坑

    一、Arrays.asList转换基本类型数组的坑 1.1 问题展示 在实际的业务开发中,我们通常会进行数组转Li...

网友评论

      本文标题:坑之Arrays.asList

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