java - ArrayList 中的 addAll() 方法类不工作
问题描述
我正在努力理解为什么 ArrayList 中的 addAll() 方法不起作用。我有我的课:
public class XList<E> extends ArrayList<E> {...
}
用一个方法:
public XList<E> union(XList<E> input) {
System.out.println(this);//
System.out.println(input);
this.addAll(input);
return this;
}
System.out.println 表明,正确的值在给定的列表中,但是在添加之后,“this”没有得到更新,并且没有修改就返回。你能告诉我问题的根源吗?非常感谢任何帮助。
SSCCE:
public class Main {
public static void main(String[] args) {
XList<Integer> list1 = new XList<>(1, 3, 9, 11);
XList<Integer> list2 = XList.of(5, 6, 9);
List<Integer> m1 = list1.union(list2);
System.out.println(m1);
}
}
class XList<E> extends ArrayList<E> {
private List<E> lista;
public XList(E a, E b, E c) {
lista = new ArrayList<>();
lista.add(a);
lista.add(b);
lista.add(c);
}
public XList(E a, E b, E c, E d) {
lista = new ArrayList<>();
lista.add(a);
lista.add(b);
lista.add(c);
lista.add(d);
}
static XList of(Integer a, Integer b, Integer c) {
return new XList(a, b, c);
}
public XList<E> union(XList<E> input) {
System.out.println("this: " + this);
System.out.println("input: " + input);
this.addAll(input);
return this;
}
public String toString() {
return lista.toString();
}
解决方案
您的问题是您的 XList 令人困惑地扩展了 ArrayList 并且还包含一个列表作为字段。这意味着 XList 基本上是两个单独的列表:它本身就是一个列表,它还包含一个不同的单独列表
如果我是你,我会删除“扩展 ArrayList”并替换
this.addAll(input);
和
this.lista.addAll(input.lista);
推荐阅读
- r - 向分组柱形图添加数据标签
- python - 从 API 导入数据并使用 Python 将其导出到 MySQL 数据库
- android - Android 11,在skia/src/ops/GrorvalOpFactory.cpp 崩溃,帮我看看为什么
- ios - SwiftUI 如何使用 TabView 隐藏导航栏
- spring - 用于远程分块的 Spring Batch 4.x 集成 XML 配置
- python - 如何将所有数据框导出到 Excel 文件中
- laravel - foreach 里面的 foreach 得到错误的值
- c - C中的结构链表连接不好
- typescript - 如何在 TypeScript 中灵活地组合类?
- vue.js - flatmap 需要额外的加载器