最近在做项目的时候,遇到使用Arrays,asList()后出现java.lang.UnsupportedOperationException。
贴出代码为:
<pre name="code" class="java">public static CodOrderTemplate appendReturnDetailFields(
CodOrderTemplate entity, String returnDetailsFieldIds) {
String existIds = "";
String realIds = "";
if (entity != null) {
existIds = entity.getTemplateFieldIds();
if (existIds.length() > 0) {
String[] filedsArray = existIds.split(",");
String[] returnDetailFields = returnDetailsFieldIds.split(",");
List<String> list1 = Arrays.asList(filedsArray);
List<String> list2 = Arrays.asList(returnDetailFields);
list1.removeAll(list2);
for (String temps : list1) {
realIds += temps + ",";
}
realIds += returnDetailsFieldIds;
if (null != realIds && realIds.length() > 0) {
entity.setTemplateFieldIds(realIds.substring(0, realIds
.length() - 1));
}
}
}
return entity;
}
出错的原因主要是因为背景色为灰色的三行代码,首先也不知道为何会出错,因为以前一直记得操作List的时候可能发生conCurrentModificationExcption,当时我就特意注意是不是这个原因,但是结果不是这样的。到网上查了一下,发现是因为Arrays.asList()返回值为:java.util.Arrays$ArrayList,而不是ArrayList。最后看了源码,才发现原来其中Arrays$ArrayList中抛出了java.lang.UnsupportedOperationException:
其中的原因似乎是有眉目了,其实,Arrays$ArrayList和ArrayList都继承自AbstractList,其中的remove(),add()等方法在AbstractList中是默认抛出上面的异常的并且不做任何处理。但是ArrayList重写了这些method来对list进行操作,对Arrays$ArrayList只是继承了方法也没有重写父类的方法,所以会抛出java.util.UnsupportedOperationException。
解决方法:
1.使用Iterator
2.将Arrays$ArrayList转为ArrayList
eg:List list = Arrays.asList(jjyy[]);
List realList = new ArrayList(list);
所以,上面贴出的代码改为:
<pre name="code" class="java">public static CodOrderTemplate appendReturnDetailFields(CodOrderTemplate entity, String returnDetailsFieldIds) {
String existIds = "";
String realIds = "";
if (entity != null) {
existIds = entity.getTemplateFieldIds();
if (existIds.length() > 0) {
String[] filedsArray = existIds.split(",");
String[] returnDetailFields = returnDetailsFieldIds.split(",");
List<String> list1 = new ArrayList<String>(Arrays.asList(filedsArray));
List<String> list2 = new ArrayList<String>(Arrays.asList(returnDetailFields));
list1.removeAll(list2);
for (String temps : list1) {
realIds += temps + ",";
}
realIds += returnDetailsFieldIds;
if (null != realIds && realIds.length() > 0) {
entity.setTemplateFieldIds(realIds.substring(0, realIds
.length() - 1));
}
}
}
return entity;
}
分享到:
相关推荐
`Arrays.asList`方法是Java中一个非常实用的工具,它允许我们将数组转换为`List`对象,以便在处理数组时可以利用`List`接口提供的便利。然而,这个方法有一些特殊的特性和限制,需要我们理解清楚才能正确使用。下面...
"Java Arrays.asList使用方法解析" Java Arrays.asList使用方法解析是Java中一个非常重要的知识点,主要介绍了Arrays.asList的使用方法和原理。Arrays.asList方法的作用是将数组或一些元素转换为集合,但需要注意的...
Java中Arrays.asList()方法详解及实例 Arrays.asList()方法是Java中一个常用的方法,它将数组转换为列表。该方法的签名为`public static <T> List<T> asList(T... a)`,它可以接受变长参数,通常情况下是一个数组...
Java中使用Arrays.asList初始化ArrayList实例方法 在 Java 中,使用 Arrays.asList 方法可以快速创建一个 List 集合,但是需要注意的是,这个方法返回的 ArrayList 并不是 java.util.ArrayList 对象,而是一个内部...
在Java编程中,Arrays.asList()方法和ArrayList是两种不同的方式来处理列表数据,它们之间存在显著的区别。这篇文章将深入探讨这两个概念以及它们在实际使用中的差异。 首先,Arrays.asList()是一个Java内置方法,...
Java中的`Arrays.asList()`方法是Java集合框架的一部分,它允许我们将数组或变长参数转换为一个固定大小的`List`对象。这个方法在处理数组与集合之间的转换时非常有用,尤其是当你需要使用集合API操作数组时。下面...
在Java编程中,`Arrays.asList()`方法是一个非常实用的工具,它允许我们将数组转换成一个`List`对象。这个方法在处理数组与集合之间的转换时,提供了很大的便利。下面我们将深入探讨`Arrays.asList()`方法的使用细节...
Arrays.asList、ArrayList的subList坑
#### 蛋白质阵列(Protein Arrays) 蛋白质阵列是一种高通量技术,用于检测生物样本中的蛋白质种类及其相对丰度。这种技术通过将成千上万种不同的蛋白质固定在一个固体基质上(如玻璃片或尼龙膜),然后用标记的...
Apress.PHP.Arrays.Single.Multi-dimensional.Associative.and.Object.Arrays.in.PHP.7.1484225554.rar 最新书籍,精讲PHP数组,文字版PDF
而一开始asList()的设计时用于打印数组而设计的,但jdk1.5开始,有了另一个比较更方便的打印函数Arrays.toString(),于是打印不再使用as
xception in thread "main" java.lang.UnsupportedOperationException Arrays.asList转化基本数据类型数组的时候有个意想不到的坑 当我们在实际业务开发过程中,难免会遇到数组转List的操作,通常我们所选择的就是...
`System.arraycopy` 和 `Arrays.copyOf` 都是Java中用于复制数组的方法,但它们在使用和处理异常情况上有所不同。这两个方法在处理数组复制时,提供了便利和效率,但各有其适用场景。 `System.arraycopy` 是一个...
temp.addAll(Arrays.asList(lowercase)); } else if (type == TYPE.CAPITAL) { temp.addAll(Arrays.asList(capital)); } else if (type == TYPE.NUMBER) { temp.addAll(Arrays.asList(number)); } else if ...
List<String> list = Arrays.asList("Item1", "Item2", "Item3"); request.setAttribute("list", list); %> ${list}"> ${item} ``` 在这个例子中,`<c:forEach>`标签用于遍历集合,并通过EL表达式`${list}`...
com.springsource.edu.emory.mathcs.backport-3.1.0.jar
在Java编程语言中,`Arrays`类是Java.util包下的一个非常重要的工具类,它提供了大量用于操作数组的静态方法,其中包括我们今天要讨论的`binarySearch()`方法。`Arrays.binarySearch()`方法允许我们在有序数组中查找...
在 Java 中,排序数组是非常常见的操作之一,而 Java 提供了多种方式来实现数组的排序,其中一种常用的方法是使用 Arrays.sort() 方法。今天,我们将详细介绍如何使用 Arrays.sort() 方法来实现数组的升序和降序排序...
SC2 - Scalable mm-Wave Phased Arrays .pdf SC3 - Challenges and Architectures.pdf SC4 - Emerging Topics in Phased Arrays and the Path to THz.pdf Session 01 - Plenary.pdf Session 02 - Processors....