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

 

posted on 2021-11-29 22:06  真情的风  阅读(633)  评论(0)    收藏  举报