java - 如何复制列表进入java中的当前数组列表?(通用列表)
问题描述
public class ArrayList<E> {
public static final int DEFAULT_CAPACITY = 10;
private int size; // number of occupied space
private E[] data; // ArrayList, encapsulate with the private keyword
public ArrayList() {
this(DEFAULT_CAPACITY);
size = 0;
}
@SuppressWarnings("unchecked")
public ArrayList(int capacity) {
data = (E[])new Object[capacity];
size = 0;
if(capacity < 0) {
throw new IllegalArgumentException("Capacity should more than 0");
}
}
//Need to be fixed
//
//
//
public ArrayList(List<E> other) {
List<E> newList = new ArrayList<E>();
}
}
这是我的代码,我用最后一个参数(List other)创建了一个构造函数。我尝试将列表复制到当前数组列表中;E[] 数据,变量。但错误是 List 无法将数据复制到 E[]。所以,我有点困惑。我怎样才能复制它们?如果我不能如何复制列表?
解决方案
这应该这样做。
@SuppressWarnings("unchecked")
public ArrayList(List<E> other) {
data = (E[]) other.toArray();
size = data.length;
}
我们正在使用toArray()
所有List
类型实现的方法。
或者分配一个数组并使用适当类型的循环复制元素。(避免使用get(i)
,因为它O(N)
适用于某些类型的列表。)
笔记:
将您的类与标准库中常用的类同名是个坏主意(
java.util.ArrayList
)您的课程没有实现
java.util.List<E>
. 应该是?如果您正在实施
java.util.List<E>
,您可以通过扩展java.util.AbstractList<E>
.
推荐阅读
- c - 如何使用 void 指针创建更通用的节点结构?
- flutter - Unicode 13 表情符号的正则表达式
- javascript - 为什么 setInterval 函数在 Microsoft Edge 中无法正常工作?
- c# - 无法反序列化传递给外部 API 的依赖事务
- c++ - 复制与移动 std::pair 支撑初始化
- python - 如何从具有索引列表的 numpy 数组列表中检索值?
- angular - 使用 ngx-soap 和 Angular6 找不到方法
- php - 动态更改个人资料封面图片
- java - 如何在插入排序中保持数据配对
- mysql - 我无法在表中创建外键。不断出现错误消息