数据结构

package structure;


import java.util.Arrays;

import java.util.Iterator;

import java.lang.Object;

import java.util.NoSuchElementException;


public class BaseSeqStructure<E> implements Iterable{


    private Object[] seq;


    private int size;


    public void BaseSeqStructure() {


        seq = new Object[10];


        size = 0;


    }


    protected void add(int index, Object item) {


        if (index < 0 || index > size) {


            throw new IndexOutOfBoundsException(index + "out of " + size());


        }

        if (null == seq) {

            seq = new Object[]{item};

        } else {

            ensureCapacity(size() + 1);

            System.arraycopy(seq, index, seq, index + 1, size - index);

            seq[index] = item;

        }


        size++;


    }


    protected Object remove(int index) {


        if (index >= size) {


            throw new IllegalArgumentException("Illegal Capacity" + index);


        } else {


            Object oldValue = seq[index];


            System.arraycopy(seq, index + 1, seq, index, size - index - 1);


            seq[--size] = null;


            return oldValue;


        }


    }


    protected int size() {


        return size;


    }


    protected void ensureCapacity(int minCapacity) {


        int oldCapacity = size();


        if (minCapacity > oldCapacity) {


            Object[] oldObj = seq;


            int newCapacity = (oldCapacity * 3) / 2 + 1;


            if (newCapacity < minCapacity) {

                int Capacity = minCapacity;


            }


            seq = Arrays.copyOf(oldObj, newCapacity);

        }


    }


    public Iterator<E> iterator() {

        return new Itr();

    }


    public class Itr implements Iterator<E>{

        int cursor;

        int lastRet = -1;


        public boolean hasNext() {

            return cursor != size;

        }


        public E next() {

            int i = cursor;

            if (i > size()) {

                throw new NoSuchElementException();

            }

            Object[] element = BaseSeqStructure.this.seq;

            cursor = i+1;

            return (E)seq[i];

        }

    }

}


转载于:https://my.oschina.net/u/2421352/blog/551098

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值