ArrayList 要求:包括add、get、size、indexOf、remove方法的实现,并在每个功能前注释其实现的逻辑,然后在主方法中调用各个方法
时间: 2024-02-04 09:03:59 浏览: 146
Arraylist的实现
好的,我可以为您演示一个简单的 ArrayList 类的实现,包括您要求的 add、get、size、indexOf 和 remove 方法。以下是实现的代码(注释中包括了功能的实现逻辑):
```java
import java.util.Arrays;
public class ArrayList<T> {
// 数组默认初始化大小
private static final int DEFAULT_CAPACITY = 10;
// 存储元素的数组
private T[] elements;
// 数组中元素的数量
private int size;
// 构造函数,默认初始化数组大小为 10
public ArrayList() {
elements = (T[]) new Object[DEFAULT_CAPACITY];
size = 0;
}
// 获取数组中元素的数量
public int size() {
return size;
}
// 添加元素到数组末尾
public void add(T element) {
if (size == elements.length) {
// 数组已满,需要扩容
int newCapacity = elements.length * 2;
elements = Arrays.copyOf(elements, newCapacity);
}
elements[size] = element;
size++;
}
// 获取指定下标的元素
public T get(int index) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException("Index out of range: " + index);
}
return elements[index];
}
// 获取指定元素在数组中的下标,如果不存在则返回 -1
public int indexOf(T element) {
for (int i = 0; i < size; i++) {
if (elements[i].equals(element)) {
return i;
}
}
return -1;
}
// 移除指定下标的元素,并返回被移除的元素
public T remove(int index) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException("Index out of range: " + index);
}
T removedElement = elements[index];
// 将该元素后面的所有元素往前移动一个位置
for (int i = index; i < size - 1; i++) {
elements[i] = elements[i + 1];
}
size--;
// 将最后一个元素置为 null,以便垃圾回收
elements[size] = null;
return removedElement;
}
}
```
接下来是在主方法中调用各个方法的示例代码:
```java
public class Main {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
System.out.println("Size of list: " + list.size());
System.out.println("Elements in list:");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
int indexOfBanana = list.indexOf("banana");
System.out.println("Index of 'banana' in list: " + indexOfBanana);
String removedElement = list.remove(indexOfBanana);
System.out.println("Removed element: " + removedElement);
System.out.println("Elements in list after removal:");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
```
运行以上代码,将输出如下结果:
```
Size of list: 3
Elements in list:
apple
banana
cherry
Index of 'banana' in list: 1
Removed element: banana
Elements in list after removal:
apple
cherry
```
阅读全文