ArrayList优化循环数组增删改查

Collection接口设计

public interface Collection<E> {
   
    int ELEMENT_NOT_FOUNT = -1;

    int size();

    boolean isEmpty();

    boolean contains(E element);

    void add(E element);

    void add(int index, E element);

    boolean remove(E element);

    E remove(int index);

    void clear();

    E get(int index);

    E set(int index, E element);

    int indexOf(E element);

}

List接口继承Conllection接口

public interface List<E> extends Collection<E> {
   }

AbstractList抽象类实现List接口

/**
 * @author feng
 * @date 2020/12/20
 * @Description
 */
public abstract class AbstractList<E> implements List<E> {
   
    protected int size;
    @Override
    public int size() {
   
        return size;
    }

    @Override
    public void add(E element) {
   
        add(size,element);
    }
    @Override
    public boolean isEmpty() {
   
        return size == 0;
    }

    @Override
    public boolean contains(E element) {
   
        return indexOf(element) != ELEMENT_NOT_FOUNT;
    }

    protected void outOfBounds(int index){
   
        throw new IndexOutOfBoundsException("index:" + index + "size" + size);
    }

    protected void rangeCheck(int index){
   
        if (index < 0 || index >= size){
   
            outOfBounds(index);
        }
    }

    protected void rangeCheckForAdd(int index){
   
        if (index < 0 || index > size){
   
            outOfBounds(index);
        }
    }

}
循环数组CircleArray<E>

import java.util.Arrays;
import java.util.Comparator;

/**
 * @author feng
 * @date 2020/12/22
 * @Description
 */
@SuppressWarnings("unchecked")
public class CircleArray<E> extends AbstractList<E> {
   

    /**
     * 记录头元素的位置
     */
    private int front;
    /**
     * 元素的个数
     */
    private E[] elements;
    /**
     * 默认初始容量
     */
    private static final int DEFAULT_CAPACITY = 10;
    /**
     * 比较器
     */
    private Comparator<E> comparator;
    /**
     * 随便加的为了toString的分组输出
     */
    private double group = size;

    public CircleArray(Comparator<E> comparator) {
   
        this.comparator = comparator;
    }


    public CircleArray(double
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值