📅  最后修改于: 2023-12-03 15:16:34.272000             🧑  作者: Mango
在Java中,ArrayList是一种常用的数据结构,它可以动态地存储元素,并且支持快速查找元素、添加元素、删除元素等操作。然而,在某些情况下,我们可能需要自定义一个ArrayList,以实现一些特殊的需求。本文介绍如何在Java中自定义一个ArrayList。
自定义ArrayList需要实现以下几个关键方法:
add
:添加元素到列表;get
:获取指定下标的元素;remove
:删除指定下标的元素;size
:获取列表中元素的数量。在实现自定义ArrayList的过程中,我们需要使用数组来存储元素。
下面是自定义ArrayList的示例代码:
public class MyArrayList<T> {
private static final int DEFAULT_CAPACITY = 10;
private int size;
private Object[] elements;
public MyArrayList() {
elements = new Object[DEFAULT_CAPACITY];
}
public T get(int index) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size);
}
return (T) elements[index];
}
public T remove(int index) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size);
}
T removed = (T) elements[index];
for (int i = index; i < size - 1; i++) {
elements[i] = elements[i + 1];
}
size--;
return removed;
}
public boolean add(T element) {
if (size == elements.length) {
grow();
}
elements[size++] = element;
return true;
}
public int size() {
return size;
}
private void grow() {
int newCapacity = elements.length * 2;
elements = Arrays.copyOf(elements, newCapacity);
}
}
下面是使用自定义ArrayList的示例代码:
MyArrayList<String> list = new MyArrayList<>();
list.add("A");
list.add("B");
list.add("C");
System.out.println(list.size()); // 3
System.out.println(list.get(1)); // B
System.out.println(list.remove(1)); // B
System.out.println(list.size()); // 2
自定义ArrayList可以帮助我们更好地理解Java中的数据结构,并且可以满足一些特殊的需求。在实现自定义ArrayList时,我们只需要使用数组来存储元素,并实现关键方法即可。