如何在Kotlin中获取一个ArrayList中不在另一个里的元素
在Kotlin中计算两个ArrayList的差集并保持结果为ArrayList类型
原代码存在的问题
- main函数内的局部变量不能使用
private修饰符,private仅适用于类的成员变量,局部变量无需访问控制修饰 minus()方法返回的是List<String>类型,无法直接赋值给ArrayList<String>类型的变量,需进行类型转换
修正后的代码
fun main() { var first = ArrayList<String>() var second = ArrayList<String>() first.add("a") first.add("b") first.add("c") first.add("d") first.add("e") second.add("a") second.add("b") second.add("c") // 将minus返回的List转换为ArrayList val difference = ArrayList(first.minus(second)) println(difference) // 输出: [d, e] }
调整说明
- 移除private修饰符:main函数中的
first、second是局部变量,直接用var声明即可,不需要访问控制修饰符 - 转换结果类型:借助
ArrayList的构造函数,将minus()返回的List实例转换为ArrayList<String>,满足变量类型要求
另一种实现方式(更直观)
也可以通过filter方法直接过滤出符合条件的元素,再包装为ArrayList:
val difference = ArrayList(first.filter { it !in second })
这种方式直接筛选第一个列表中不存在于第二个列表的元素,逻辑更清晰,结果同样是ArrayList<String>类型。
内容的提问来源于stack exchange,提问作者Marlon
相关产品推荐
相关产品推荐

