从列表中删除所有原因java.lang.UnsupportedOperationException(removeAll From a List Cause java.lang.UnsupportedO

编程入门 行业动态 更新时间:2024-10-26 18:16:13
从列表中删除所有原因java.lang.UnsupportedOperationException(removeAll From a List Cause java.lang.UnsupportedOperationException) java

我想将successList设置为[10,14]我试过的是,

String oneStr = "10,11,12,14"; String twoStr = "11,14"; Returns r = new Returns(); r.setFailureList(Arrays.asList(twoStr.split(","))); r.setSuccessList(Arrays.asList(oneStr.split(","))); r.getSuccessList().removeAll(r.getFailureList()); System.out.println(r.getSuccessList());

返回类是,

List<String> successList; List<String> failureList; public List<String> getSuccessList() { return successList; } public void setSuccessList(List<String> successList) { this.successList = successList; } public List<String> getFailureList() { return failureList; } public void setFailureList(List<String> failureList) { this.failureList = failureList; } public void setFailureList(ArrayList<String> failureList) { this.failureList = failureList; }

并且导致stackTrace的java.lang.UnsupportedOperationException ,

Exception in thread "main" java.lang.UnsupportedOperationException at java.util.AbstractList.remove(Unknown Source) at java.util.AbstractList$Itr.remove(Unknown Source) at java.util.AbstractCollection.removeAll(Unknown Source)

I want to set successList as [10,14] What i tried is,

String oneStr = "10,11,12,14"; String twoStr = "11,14"; Returns r = new Returns(); r.setFailureList(Arrays.asList(twoStr.split(","))); r.setSuccessList(Arrays.asList(oneStr.split(","))); r.getSuccessList().removeAll(r.getFailureList()); System.out.println(r.getSuccessList());

The Returns Class is,

List<String> successList; List<String> failureList; public List<String> getSuccessList() { return successList; } public void setSuccessList(List<String> successList) { this.successList = successList; } public List<String> getFailureList() { return failureList; } public void setFailureList(List<String> failureList) { this.failureList = failureList; } public void setFailureList(ArrayList<String> failureList) { this.failureList = failureList; }

And Cause java.lang.UnsupportedOperationException the stackTrace is,

Exception in thread "main" java.lang.UnsupportedOperationException at java.util.AbstractList.remove(Unknown Source) at java.util.AbstractList$Itr.remove(Unknown Source) at java.util.AbstractCollection.removeAll(Unknown Source)

最满意答案

来自asList()的文档

返回由指定数组支持的固定大小的列表。

因此,当您直接修改(添加,删除..etc)时,您最终会遇到exception 。

所以,但在这种情况下

new ArrayList<String>(Arrays.asList(twoStr.split(",")))

在这里,您不是直接引用该list 。 您正在创建一个新的ArrayList并使用Arrays.as.asList(twoStr.split(","))返回的列表数据,这不是Unmodifiable (就大小而言)。

From docs of asList()

Returns a fixed-size list backed by the specified array.

So when you are directly modifying(adding, removing ..etc) to that, you end up with exception.

So , but in the case

new ArrayList<String>(Arrays.asList(twoStr.split(",")))

Here you are not referring to the list directly. You are creating a new ArrayList and using the data of the list returned by Arrays.as.asList(twoStr.split(",")) ,which is not a Unmodifiable(in terms of size).

更多推荐

本文发布于:2023-07-29 20:30:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1319522.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:原因   列表中   java   lang   removeAll

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!