今天项目中有个需求场景:
A和B都是List,而B是A的子集,现在想求A和B的差集。
想到了List中提供的removeAll()方法可以求得差集,但是结果确报了UnsupportedOperationException异常。
仔细分析了下,List A我是通过数组经过Arrays.asList()转化成List,但是它是继承AbstractList的子类,而AbstractList是不支持removeAll()和remove()操作的。
如果要执行remove()和removeAll()操作,可以转化成Set()或者ArrayList、LinkedList才可以。
因为我的需求List A中的元素要保证唯一,所以我在数组转化成List之后又转化成了Set,之后就没问题了。
1 Set<String> setA = new HashSet<String>(Arrays.asList(arrA));
相关推荐
`Arrays.asList()`返回的是一个由数组支持的固定大小列表,该列表不允许添加或删除元素,因此某些操作(如`add`或`remove`)会抛出`UnsupportedOperationException`异常。为了得到一个可修改的列表,可以先使用`...
这意味着如果尝试添加新的元素,程序将会抛出 `UnsupportedOperationException` 异常。此外,`Arrays.asList()` 可以接受可变数量的参数 (varargs),使得创建包含多个元素的 List 变得更为简便。 #### 2. 迭代的...
详解 Java 集合类 List ...List 并不是我们常用的 java.util.ArrayList,而是 Arrays 的静态内部类 java.util.Arrays.ArrayList,该类继承自抽象类 java.util.AbstractList,但没有实现 add 方法,默认抛出 java.lang_...
在这个包中,我们经常会用到`Iterator`和`List`接口,这两个接口在Java编程中扮演着非常重要的角色。 首先,`Iterator`接口是Java Collections Framework中的一个基础接口,它提供了一种遍历集合元素的方式。与旧版...
Java集合框架是Java编程语言中一个至关重要的组成部分,它为开发者提供了处理对象集合的强大工具。Java类集框架(Java Collections Framework,简称JCF)在Java 2版本中引入,极大地简化了存储、管理和操作批量数据...
- 如果试图在迭代过程中添加元素,会导致`UnsupportedOperationException`异常。这是因为`Iterator`的设计初衷是为了避免在遍历过程中修改集合,从而提高程序的稳定性。 #### 三、Enhanced for loop:现代的迭代...
在Java编程中,将数组转换为List是很常见的操作,特别是在处理数据集合时。本文主要讨论了三种将list转换为数组以及数组转换为List的方法,并分析了它们的特点和适用场景。 一、最常见方式:Arrays.asList() 这种...
C选项的`list.remove("java")`只会删除第一个匹配的"java",D选项的`list.removeAll("java")`会抛出`UnsupportedOperationException`,因为ArrayList不支持直接用字符串删除元素,需要传入一个集合。 3. **统计字符...
### Java编程中常见的坑 #### 1. 自动拆箱时遇到null会抛出空指针异常 在Java中,当我们尝试将一个包装类类型的变量(例如`Integer`)自动拆箱为基本类型(例如`int`)时,如果该包装类变量为`null`,那么Java会抛...
但是,需要注意的是,asList并不是我们通常使用的List集合,而是一个内部类,它的add、remove和clear方法都会抛出UnsupportedOperationException异常。 例如: ```java String[] strs = {"1","2","3"}; List...
Java集合类是Java编程语言中不可或缺的一部分,它们用于存储、管理和操作对象。面试时,面试官经常通过提问关于集合类的问题来评估候选人的基础知识和实际经验。以下是一些常见的Java集合类面试题及其详细解答: 1....
答案:在Java中,Arrays.asList方法的返回值是一个固定大小的列表,不能进行add、remove、clear操作,否则将抛出UnsupportedOperationException异常。 八、 阿里巴巴编码规范 阿里巴巴编码规范是阿里巴巴集团内部...
需要注意的是,Arrays.asList() 方法返回的是一个固定大小的集合,不能使用add、remove、clear等方法,否则会抛出UnsupportedOperationException异常。如果需要使用这些方法,需要重新new一个ArrayList对象,例如: ...
在Java编程中,组合(Composition)是一种设计模式,它允许我们把对象组织成树状层次结构,这样子对象可以被视为单个单元。这种模式强调"部分-整体"的关系,是面向对象设计的基本原则之一。本篇文章将深入探讨Java中...
ArrayList是Java中`java.util`包下的一个类,它是List接口的一个具体实现。ArrayList基于动态数组,允许我们在列表的任何位置插入和删除元素,提供了快速访问元素的能力。其内部实现通过扩容机制来保证在添加元素时...
以上是对Java编程中集合类的相关知识点进行了详细的介绍,包括了集合类的概念、分类、常用接口及其实现类、异常处理以及泛型的使用等重要内容。掌握这些知识点对于深入理解和使用Java集合框架至关重要。
`AbstractList`是Java集合框架中一个非常重要的抽象类,它为创建自定义的`List`类提供了基础框架和支持。通过理解`AbstractList`的关键概念和使用方式,Java开发者可以更加高效地开发出符合自己需求的列表实现。
由于这个内部类没有实现List接口的所有方法,因此,如果尝试对这个List进行添加、删除或修改元素的操作,程序会抛出UnsupportedOperationException异常。 例如,下面的代码会导致运行时错误: ```java list.add(...
在Java中,这种模式的应用可以帮助我们简化对复杂对象层次结构的操作,同时保持接口的一致性。下面我们将深入探讨组合模式的核心概念、实现方式以及其在实际开发中的应用。 一、核心概念 1. **组件(Component)**...
- **`UnsupportedOperationException`**:当试图调用集合中不支持的操作时抛出,例如尝试修改不可变集合。 - **`IllegalArgumentException`**:当传递给集合方法的参数无效时抛出。 #### 五、泛型的使用 泛型是...