Java 中的自定义列表实现
Java 中的自定义列表实现
在这个类中DemoList.java,我们正在创建一个具有以下功能的 List 实现:
- 列表可以从零增长到无限大(至少在理论上是这样)。
- 列表将在创建时使用至少 10 个元素进行初始化。
- List 将提供在其生命周期的任何状态下获取、添加、删除和打印列表的方法。
列表实现的源代码
import java.util.Arrays; public class DataList<E> { //Size of list private int size = 0; //Default capacity of list is 10 private static final int DEFAULT_CAPACITY = 10; //This array will store all elements added to list private Object elements[]; //Default constructor public DataList() { elements = new Object[DEFAULT_CAPACITY]; } //Add method public void add(E e) { if (size == elements.length) { ensureCapacity(); } elements[size++] = e; } //Get method @SuppressWarnings("unchecked") public E get(int i) { if (i >= size || i < 0) { throw new IndexOutOfBoundsException("Index: " + i + ", Size " + i); } return (E) elements[i]; } //Remove method @SuppressWarnings("unchecked") public E remove(int i) { if (i >= size || i < 0) { throw new IndexOutOfBoundsException("Index: " + i + ", Size " + i); } Object item = elements[i]; int numElts = elements.length - ( i + 1 ) ; System.arraycopy( elements, i + 1, elements, i, numElts ) ; size--; return (E) item; } //Get Size of list public int size() { return size; } //Print method @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append('['); for(int i = 0; i < size ;i++) { sb.append(elements[i].toString()); if(i<size-1){ sb.append(","); } } sb.append(']'); return sb.toString(); } private void ensureCapacity() { int newSize = elements.length * 2; elements = Arrays.copyOf(elements, newSize); } }
让我们快速测试一下我们的 List 实现:
public class Main { public static void main(String[] args) { DataList<Integer> list = new DataList<>(); //Add elements list.add(1); list.add(2); list.add(3); System.out.println(list); //Remove elements from index list.remove(2); System.out.println(list); //Get element with index System.out.println( list.get(0) ); System.out.println( list.get(1) ); //List Size System.out.println(list.size()); } }
运行结果:
输出: [1,2,3,4,5] [1,2,4,5] 1 2 4
浙公网安备 33010602011771号