• [Arrays.asList()办法介绍]
  • [Arrays.asList()办法的坑]
  • [处理Arrays.asList()办法的坑]
  • [总结]
  • [Arrays.asList()办法介绍]
  • [Arrays.asList()办法的坑]
  • [处理Arrays.asList()办法的坑]
  • [总结]

Java中,咱们常常需求将数组转换为List来便利地进行操作。Arrays.asList()办法是一种常见的办法,可是它存在一个不太常见但需求留意的坑。

本文将深入探讨Arrays.asList()的运用,提醒其间的圈套,并供给处理方案。

[Arrays.asList()办法介绍]

Arrays.asList()办法是将数组转换为List的办法,它回来一个List方针,但这个List方针并不是java.util.ArrayList方针,而是Arrays内部的ArrayList方针。

Arrays.ArrayList类承继自AbstractList,完成了List接口。它重写了add()remove()等修正List结构的办法,并将它们直接抛出UnsupportedOperationException反常,然后制止了对List结构的修正。

具体来说,Arrays.asList()办法回来的是Arrays类中的一个私有静态内部类ArrayList,它承继自AbstractList类,完成了List接口。

Arrays.asList()办法的运用十分简略,只需求将一个数组作为参数传递给该办法即可。例如:

String[]arr=newString[]{"a","b","c"};
List<String>list=Arrays.asList(arr);

根据 Spring Boot + MyBatis Plus + Vue & Element 完成的后台办理体系 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、付出、短信、商城等功能

  • 项目地址:github.com/YunaiV/ruoy…
  • 视频教程:doc.iocoder.cn/video/

[Arrays.asList()办法的坑]

虽然Arrays.asList()办法很便利,但也存在一些坑,其间最常见的一个是:在运用Arrays.asList()办法时,假如对回来的List方针进行修正(例如增加、删去元素),将会抛出”UnsupportedOperationException“反常。

为什么会出现这个反常呢?这是因为Arrays.asList()办法回来的List方针,是一个固定巨细的List,不能进行结构上的修正,否则会抛出反常。

下面的代码演示了这个问题:

String[]arr=newString[]{"a","b","c"};
List<String>list=Arrays.asList(arr);
list.add("d");//抛出UnsupportedOperationException反常

上述代码中,咱们测验向List方针中增加一个新的元素”d”,成果会抛出”UnsupportedOperationException“反常。

根据 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 完成的后台办理体系 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、付出、短信、商城等功能

  • 项目地址:github.com/YunaiV/yuda…
  • 视频教程:doc.iocoder.cn/video/

[处理Arrays.asList()办法的坑]

要处理Arrays.asList()办法的坑,咱们需求将回来的List方针转换为一个可修正的List方针。有几种办法能够完成这个方针:

[办法一:运用java.util.ArrayList类]

咱们能够运用java.util.ArrayList类,将Arrays.asList()办法回来的List方针转换为一个java.util.ArrayList方针,示例如下:

String[]arr=newString[]{"a","b","c"};
List<String>list=newArrayList<>(Arrays.asList(arr));
list.add("d");//正常运转

上述代码中,咱们首先运用Arrays.asList()办法将一个数组转换为一个List方针,然后运用ArrayList的结构办法,将这个List方针转换为一个java.util.ArrayList方针,最终能够向这个ArrayList方针中增加元素。

[办法二:运用Collections类]

咱们也能够运用Collections类供给的静态办法,将Arrays.asList()办法回来的List方针转换为一个可修正的List方针,示例如下:

String[]arr=newString[]{"a","b","c"};
List<String>list=newArrayList<>(Arrays.asList(arr));
Collections.addAll(list,"d");//正常运转

经过Collections.addAll()办法,咱们能够将数组中的元素逐一增加到一个新的ArrayList方针中,然后完成了可修正性。

[总结]

在运用Arrays.asList()办法时,需求留意回来的List方针是一个固定巨细的List,不支持结构上的修正操作。为了防止这个圈套,咱们能够运用java.util.ArrayList或Collections类供给的办法将回来的List方针转换为可修正的List。经过了解这个圈套并采纳相应的处理方案,咱们能够安全地将数组转换为List,并防止潜在的反常情况。

不要让Arrays.asList()的圈套坑了你的代码!

在Java中,咱们常常需求将数组转换为List来便利地进行操作。Arrays.asList()办法是一种常见的办法,可是它存在一个不太常见但需求留意的坑。本文将深入探讨Arrays.asList()的运用,提醒其间的圈套,并供给处理方案。

[Arrays.asList()办法介绍]

Arrays.asList()办法是将数组转换为List的办法,它回来一个List方针,但这个List方针并不是java.util.ArrayList方针,而是Arrays内部的ArrayList方针。

Arrays.ArrayList类承继自AbstractList,完成了List接口。它重写了add()remove()等修正List结构的办法,并将它们直接抛出UnsupportedOperationException反常,然后制止了对List结构的修正。

具体来说,Arrays.asList()办法回来的是Arrays类中的一个私有静态内部类ArrayList,它承继自AbstractList类,完成了List接口。

Arrays.asList()办法的运用十分简略,只需求将一个数组作为参数传递给该办法即可。例如:

String[]arr=newString[]{"a","b","c"};
List<String>list=Arrays.asList(arr);

[Arrays.asList()办法的坑]

虽然Arrays.asList()办法很便利,但也存在一些坑,其间最常见的一个是:在运用Arrays.asList()办法时,假如对回来的List方针进行修正(例如增加、删去元素),将会抛出”UnsupportedOperationException“反常。

为什么会出现这个反常呢?这是因为Arrays.asList()办法回来的List方针,是一个固定巨细的List,不能进行结构上的修正,否则会抛出反常。

下面的代码演示了这个问题:

String[]arr=newString[]{"a","b","c"};
List<String>list=Arrays.asList(arr);
list.add("d");//抛出UnsupportedOperationException反常

上述代码中,咱们测验向List方针中增加一个新的元素”d”,成果会抛出”UnsupportedOperationException“反常。

[处理Arrays.asList()办法的坑]

要处理Arrays.asList()办法的坑,咱们需求将回来的List方针转换为一个可修正的List方针。有几种办法能够完成这个方针:

[办法一:运用java.util.ArrayList类]

咱们能够运用java.util.ArrayList类,将Arrays.asList()办法回来的List方针转换为一个java.util.ArrayList方针,示例如下:

String[]arr=newString[]{"a","b","c"};
List<String>list=newArrayList<>(Arrays.asList(arr));
list.add("d");//正常运转

上述代码中,咱们首先运用Arrays.asList()办法将一个数组转换为一个List方针,然后运用ArrayList的结构办法,将这个List方针转换为一个java.util.ArrayList方针,最终能够向这个ArrayList方针中增加元素。

[办法二:运用Collections类]

咱们也能够运用Collections类供给的静态办法,将Arrays.asList()办法回来的List方针转换为一个可修正的List方针,示例如下:

String[]arr=newString[]{"a","b","c"};
List<String>list=newArrayList<>(Arrays.asList(arr));
Collections.addAll(list,"d");//正常运转

经过Collections.addAll()办法,咱们能够将数组中的元素逐一增加到一个新的ArrayList方针中,然后完成了可修正性。

[总结]

在运用Arrays.asList()办法时,需求留意回来的List方针是一个固定巨细的List,不支持结构上的修正操作。为了防止这个圈套,咱们能够运用java.util.ArrayList或Collections类供给的办法将回来的List方针转换为可修正的List。经过了解这个圈套并采纳相应的处理方案,咱们能够安全地将数组转换为List,并防止潜在的反常情况。

不要让Arrays.asList()的圈套坑了你的代码!