Custom Array Expansion

background

We know that there are many structures in the array java inside, such as queues, stacks, etc., but these are the basic data structure of a data structure array, list or tree like configuration. So here own definition of an array of expansion, can be used to extend into the stack or queue.

Code

public class UniArr<E> {
    private E[] arr;
    private int size;
    private final int DEFAULT_CAPACITY = 10;

    public UniArr() {
        arr = (E[]) new Object[DEFAULT_CAPACITY];
    }

    public UniArr(int capacity) {
        arr = (E[]) new Object[capacity];
    }

    private void add(int index,E e) {
        if (index < 0 || index > arr.length) {
            throw new IllegalArgumentException("索引异常");
        }
        if (size == arr.length) {
            E[] newArr = (E[]) new Object[2 * size];
            for (int i = 0; i < size; i++) {
                newArr[i] = arr[i];
            }
            arr = newArr;
        }
        for (int i = size; i > index; i--) {
            arr[i] = arr[i - 1];
        }
        arr[index] = e;
        size++;
    }

    public void add(E e) {
        add(size, e);
    }

    public E remove(int index) {
        if (index < 0 || index > arr.length) {
            throw new IllegalArgumentException("索引异常");
        }
        E e = arr[index];
        for (int i = index; i < size - 1; i++) {
            arr[i] = arr[i + 1];
        }
        arr[size-1] = null;
        size--;
        return e;
    }

    public E remove(E e) {
        int i = indexOfEle(e);
        return remove(i);
    }

    private int indexOfEle(E e) {
        int index = 0;
        for (int i = 0; i < size; i++) {
            if (arr[i].equals(e)) {
                index =i;
            }
        }
        return index;
    }

    @Override
    public String toString() {
        StringBuilder sbr = new StringBuilder();
        sbr.append("[");
        for (int i = 0; i < size; i++) {
            sbr.append(arr[i]);
            if (i < size - 1) {
                sbr.append(",");
            }
        }
        sbr.append("]");
        return sbr.toString();
    }

   
}

 

Guess you like

Origin blog.csdn.net/ly853602/article/details/93772383