请以Java初学者的视角使用java编写方法void append(),在顺序表末尾增加一组元素(数量未知)。当顺序表满时,则自动扩容1/2。如原容量10,满时新容量为15;
时间: 2024-09-13 19:16:06 浏览: 44
Java精华积累每个初学者都应该搞懂的问题.txt
在Java中,对于一个简单的顺序列表(也叫数组列表),你可以创建一个`ArrayList`,它已经实现了动态扩容的功能,包括在需要时自动扩大大小。`ArrayList`的底层实际上是基于数组实现的,所以我们可以通过`append()`方法在末尾添加元素,并处理扩容操作。以下是基本的步骤:
```java
import java.util.ArrayList;
public class LinkedList {
private static final int DEFAULT_CAPACITY = 10;
private ArrayList<Object> elements;
private int size;
public LinkedList() {
this.elements = new ArrayList<>(DEFAULT_CAPACITY);
this.size = 0;
}
public void append(Object item) {
if (size == elements.size()) { // 判断是否已满
resize(size + elements.size() / 2); // 扩容
}
elements.add(item);
size++;
}
private void resize(int newSize) {
ArrayList<Object> newArray = new ArrayList<>(newSize);
for (Object obj : elements) {
newArray.add(obj);
}
elements = newArray;
}
// 其他方法...
}
```
在这个例子中,`append()`方法首先检查当前列表是否满了。如果满了,就调用`resize()`方法将列表的容量扩增到原来的1.5倍。然后,直接将新的元素添加到列表末尾并更新元素数量。
注意,这个实现假设了`Object`可以存储任何类型的值。如果你有特定的数据类型需求,应该将`Object`替换为相应的类型。
阅读全文