欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > 避开Arrays.asList使用的坑

避开Arrays.asList使用的坑

2025/2/23 16:39:32 来源:https://blog.csdn.net/weixin_54925172/article/details/145531272  浏览:    关键词:避开Arrays.asList使用的坑

坑1:不能对Arrays.asList返回的list进行增删操作

    /*** 坑1:不能对Arrays.asList返回的list进行增删操作* @param args*/public static void main1(String[] args) {String[] arr = new String[]{"a", "b", "c"};List<String> list = Arrays.asList(arr);// 集合元素不能新增try {list.add("s");} catch (Exception e) {System.out.println("不能新增, class: " + e.getClass() + " errorMssg: " + e.getMessage());}try {// 集合元素不能删除list.remove("a");} catch (Exception e) {System.out.println("不能删除, case: " + e.getClass() + " errorMssg:" + e.getMessage());}// 可以修改集合元素list.set(0, "s");System.out.println("修改成功!");}

测试 

 

坑2:会把集合整个作为对象存储

 

    /*** 坑2:会把集合整个作为对象存储* @param args*/public static List main2(String[] args) {int[] arr = new int[]{1, 2, 3};List list = Arrays.asList(arr);return list;}

 测试

输出数组对象

针对这一现象,只需要将int转为封装类型即可

    /*** 坑2之填坑法*/public static List main2_1(String[] args) {Integer[] arr = new Integer[]{1, 2, 3};List list = Arrays.asList(arr);return list;}

坑3:修改元素,会同时修改原集合的元素

 

    /*** 坑3:修改元素,会同时修改原集合的元素* @param args*/public static void main3(String[] args) {String[] arr = new String[]{"a", "b", "c"};List<String> list = Arrays.asList(arr);list.set(0, "s");for (String s : arr) {System.out.println(s);}}

 测试

改变原数组对象

 正确写法

    /*** 对坑3的填坑法*/public static void main3_1(String[] args) {String[] arr = new String[]{"a", "b", "c"};List<String> list = new ArrayList<>(Arrays.asList(arr));list.set(0, "s");for (String s : arr) {System.out.println(s);}}

 测试

注:测试Arrays.asList的坑。学习内容来自图灵--徐庶

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词