java_自定義一個List(類似ArrayList)

TestMain.java

package listTest;
public class TestMain {
    public static void main(String[] args){
        MyList<String> myList = new MyList<>();
        myList.add("1");
        myList.add("2");
        myList.add("3");
//        myList.add("4");
//        myList.add("3");
//        myList.add("3");
//        myList.add("3");
//        myList.add("3");
//        myList.add("3");
//        myList.add("3");
//        myList.add("3");
        for(int i = 0 ; i < myList.getIndex() ; i++){
            System.out.println(myList.get(i));
        }
        
        
//        System.out.println(myList.getSize());
        
//        System.out.println(myList.isEmpty());
        
//        System.out.println("刪除成功");
//        myList.clear();
//        for(int i = 0 ; i < myList.getIndex() ; i++){
//            System.out.println(myList.get(i));
//        }
        
        myList.remove(1);
        
        for(int i = 0 ; i < myList.getIndex() ; i++){
            System.out.println(myList.get(i));
        }
    }
}

MyList.java

package listTest;

public class MyList<E> {
    //将List的長度初始化爲10
    private E[] eList = (E[]) new Object[10];
    private int index = 0;
    
    public boolean add(E e){
        if(index < eList.length){
            //把el添加到List當中
            eList[index] = e ;
            index ++ ;
        }//如果List滿了則擴充長度
        else{
            E[] tList = (E[]) new Object[eList.length * 2];
            //將eList賦給tList
            System.arraycopy(eList, 0, tList, 0, eList.length);
            //將eList指向tList
            eList = tList ;
            eList[index] = e ;
            index ++ ;
            System.out.println("擴充了!");
        }
        System.out.println("添加成功!");
        return true;
    }

public int getIndex() {
        return index;
    }

public void setIndex(int index) {
        this.index = index;
    }
    
    /*
     * get
     */
    public Object get(int index){
        return eList[index];
    }

/*
     * size
     */
    public int getSize(){
        return index;
    }
    
    /*
     * isEmpty
     */
    public boolean isEmpty(){
        if(index == 0 ){
            return true;
        }else{
            return false;
        }
    }
    
    /*
     * clear
     */
    public void clear(){
        for(int i = 0 ; i < index ; i++){
            eList[i] = null;
        }
        index = 10;
    }
    
    /*
     * remove
     */
    public Object remove(int i){
        eList[i] = null;
        for( ; i < index; i ++){
            
            eList[i] = eList[++i];
        }
        index --;
        return eList;
    }
}

java_自定義一個List(類似ArrayList),布布扣,bubuko.com

时间: 2024-10-19 19:56:26

java_自定義一個List(類似ArrayList)的相关文章

Notepad++ 自定義關鍵字

Notepad++是一款輕便好用的編輯器,但可能有些語言的關鍵字不全,比如SQL中,默認關鍵字沒有Merge. 如何給Notepad++中的語言增加關鍵字,而不是大動干戈自定義一個語言? 步驟: Setttings --> Style  Configurator --> Language,User-defined keywords

預加載combobox定義

script裡定義如下: $(function(){ $('#CUST_NAME').combobox({  valueField: 'value',  textField: 'label',  data: [{   label: '不用輸入',   value: '0'    },{   label: '詢問輸入',   value: '1'  },{   label: '必須輸入',   value: '2'  }] }); $('#CUST_NAME'').combobox('setVal

java_在JFrame上使用自定義圖片

package drawImage;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Image;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;import javax.swing.JFrame;import javax.swing.JPanel;public class DrawImage extends

Q郵箱轉移自定義目錄中的郵件

1.之前在Q郵箱上建立了許多規則和收件箱,現在想統一用Mac上的郵局管理 2.Mac上會同步對應郵箱的自定義目錄,此時這些目錄便十分多餘礙眼 3.Q郵箱單頁顯示郵件數量上限是100,這意味著手動轉移十分痛苦 4.於是寫了個applescript,但不知為啥一用腳本就轉移失敗 5.在debug的過程中發現刪除這些分類時,是不一定連信一起刪的,可以勾選checkbox選擇移入收件箱....wtf... 此文僅僅告誡自己多動腦少作死

從Android端鎖定慣用網路類型

Android的慣用網路類型, 也就是preferred network mode, 是儲存在SettingsProvider中. 當然, modem中也會儲存一份, 但依照Android的設計, 是以SettingsProvider中所存放的使用者設定值為主, 若AP core和modem不同步時, 就會由AP core主動向modem端發起同步的請求. 從Android M開始, Android Settingsprovider的儲存方式改由原本的databases換成XML檔,因此,我們只

vue自定義指令

自定義指令可以允許代碼複用, 全局自定義指令 vue.directive('指令名',{鉤子函數:指令函數}) 局部自定義指令: vue({ directives:{指令名:{鉤子函數:指令函數} }) 自定指令提供了幾個鉤子函數: bind.inserted.update.componentUpdated.unbind 鉤子函數參數: el,binding,vnode,oldVnode 有時也可以不使用鉤子函數. 原文地址:https://www.cnblogs.com/Zhengxiaoxi

類似太陽的恒星以非常快的速度產生

英國都漢姆大學計算宇宙學研究所馬克-施文柏恩克(Mark Swinbank)博士說:“我們還沒有完全瞭解恒星形成得如此快的原因.但我們的觀測結果表明,在早期宇宙中,恒星的形成速度比現在大很多.早期宇宙中 的星系看起來已經經歷了一個快速生長過程,使得類似太陽的恒星以非常快的速度產生.” 科學家估計,SMM J2135-0102星系產生恒星的速度相當於每年產生出250個太陽.英國都漢姆大學帶領導的國際研究小組稱這次發現就像看到“正在經歷快速生長的青少年”. 研究人員隨後用強大的亞毫米波陣列望遠鏡對

定義的宏超出了9個變量時,用第二個或多個宏更新第一個宏

CLEAR:GT_FIELDCAT,        GS_FIELDCAT.  DATA: LI_POS  TYPE I,        LI_POS2 TYPE I. DEFINE FIELDCAT.    ADD 1 TO LI_POS.    GS_FIELDCAT-EDIT          = &1."允許編輯    GS_FIELDCAT-LZERO         = &2."前導0    GS_FIELDCAT-NO_ZERO       = &

Linux系統SUDO的使用定義及設定

什麼是sudo?Sudo是可以讓某個用户不需要擁有(管理員)的賬號密碼,可以執行管理員的權限的.作為管理員可以指派某些用户可以執行某些 特定命令. Sudo的特點 它的特性主要有这样幾點: Sudo能够限制用户只在某台主機上運行某些命令 Sudo提供了豐富的日志,詳细地記錄了每個用户幹了什麼. 它能够將日記傳到中心主機或者日記服務器 Sudo使用時間戳文件來執行類似的"檢票"系统.當用户調用 sudo并且输入它的密碼時, 用户获得了一张存活期为5分钟的票 (这个值可以在编译的时候改变)