Java 順序表的簡單實現(xiàn)

/**
 * Description 順序表
 * Date 2017-09-02
 * Author Edgar
 */
public class Sequence<E> {
    //存儲元素的數(shù)組
    private Object[] elem;
    //數(shù)組的容量
    private int capacity;
    //順序表的實際大小
    private int size;

    public Sequence(int capacity){
        if (capacity<0){
            throw new RuntimeException("初始容量不能小于0");
        }
        this.capacity=capacity;
        elem=new Object[capacity];
        size =0;
    }

    public Sequence(){
       this(10);
    }

    /**
     * 獲取指定位置的元素
     * @param index
     * @return
     */
    public E get(int index){
        checkIndexBounds(index);
        return (E) elem[index];
    }

    /**
     * 查找某元素在順序表中是否存在
     * @param e
     * @return 存在則返回下標若专,否則返回-1
     */
    public int find(E e){
        for (int i = 0; i < size; i++) {
            if (elem[i]==e){
                return i;
            }
        }
        return -1;
    }

    /**
     * 向指定位置添加元素
     * @param e
     * @param index
     * @return
     */
    public boolean add(E e,int index) {
        if (index<0 || index>size){
            return false;
        }
        checkCapacity();
        for (int i = size -1; i>=index; i--){
            elem[i+1]=elem[i];
        }
        elem[index]=e;
        size++;
        return true;
    }

    /**
     * 向順序表尾巴添加元素
     * @param e
     */
    public void add(E e){
        checkCapacity();
        elem[size++]=e;
    }

    /**
     * 移除指定位置的元素
     * @param index
     */
    public void remove(int index){
        checkIndexBounds(index);
        for (int i = index; i< size -1; i++){
            elem[i]=elem[i+1];
        }
        elem[--size]=null;
    }

    /**
     * 移除順序表中最后一個元素
     */
    public void remove(){
        elem[--size]=null;
    }

    /**
     * 修改指定位置上的元素
     * @param e
     * @param index
     */
    public void set(E e,int index){
        checkIndexBounds(index);
        elem[index]=e;
    }

    public int size(){
        return size;
    }

    public boolean isEmpty(){
        return size ==0;
    }

    /**
     * 若順序表大小超過數(shù)組容量棘街,則根據(jù)下面的增長策略增加數(shù)組容量脑题,并拷貝原來的數(shù)組
     */
    private void checkCapacity(){
        if (size>=capacity){
            capacity=capacity+(int) (capacity*0.5f);
            elem= Arrays.copyOf(elem,capacity);
        }
    }

    /**
     * 檢查數(shù)組下標是否越界
     * @param index
     */
    private void checkIndexBounds(int index){
        if (index<0 || index >= size){
            throw new IndexOutOfBoundsException();
        }
    }
}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末赞辩,一起剝皮案震驚了整個濱河市僧须,隨后出現(xiàn)的幾起案子通危,更是在濱河造成了極大的恐慌熟尉,老刑警劉巖南用,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件跳芳,死亡現(xiàn)場離奇詭異芍锦,居然都是意外死亡,警方通過查閱死者的電腦和手機飞盆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門娄琉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來次乓,“玉大人,你說我怎么就攤上這事孽水∑毖” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵女气,是天一觀的道長杏慰。 經(jīng)常有香客問我,道長炼鞠,這世上最難降的妖魔是什么缘滥? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮谒主,結果婚禮上朝扼,老公的妹妹穿的比我還像新娘。我一直安慰自己霎肯,他們只是感情好擎颖,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著观游,像睡著了一般肠仪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上备典,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天异旧,我揣著相機與錄音,去河邊找鬼提佣。 笑死吮蛹,一個胖子當著我的面吹牛,可吹牛的內容都是我干的拌屏。 我是一名探鬼主播潮针,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼倚喂!你這毒婦竟也來了每篷?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤端圈,失蹤者是張志新(化名)和其女友劉穎焦读,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體舱权,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡矗晃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了宴倍。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片张症。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡仓技,死狀恐怖,靈堂內的尸體忽然破棺而出俗他,到底是詐尸還是另有隱情脖捻,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布兆衅,位于F島的核電站郭变,受9級特大地震影響,放射性物質發(fā)生泄漏涯保。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一周伦、第九天 我趴在偏房一處隱蔽的房頂上張望夕春。 院中可真熱鬧,春花似錦专挪、人聲如沸及志。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽速侈。三九已至,卻和暖如春迫卢,著一層夾襖步出監(jiān)牢的瞬間倚搬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工乾蛤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留每界,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓家卖,卻偏偏與公主長得像眨层,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子上荡,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內容