最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實現(xiàn)一個順序表的完整代碼

 更新時間:2021年04月14日 16:31:07   作者:4tong  
順序表是用一段物理地址連續(xù)的存儲單元依次存儲數(shù)據(jù)元素的線性結(jié)構(gòu),一般采用數(shù)組存儲。在數(shù)組上完成數(shù)據(jù)的增刪減改。順序表的底層是一個數(shù)組

實現(xiàn)一個順序表

接口實現(xiàn)

定義一個MyArrayList類,在類中實現(xiàn)以下函數(shù)

public class MyArrayList {
   
}

數(shù)組的定義

public int[] elem;//定義一個整形數(shù)組
    public int usize;//usize表示數(shù)組的長度
    public MyArrayList(){
        this.elem = new int[5];
}

打印順序表

for循環(huán)打印順序表的每一位

public void display(){
        for (int i = 0; i < this.usize; i++) {
            System.out.print(this.elem[i]+" ");
        }
        System.out.println();
    }

在pos位置新增元素

先定義一個isFull函數(shù)判斷順序表是否滿了,滿了返回true,沒滿則返回false

public boolean isFull(){
        if (this.usize == this.elem.length){
            return true;
        }
        return false;
    }

將pos位置后的元素后移,順序表順序表長度增加一位

public void add(int pos, int data){
        //判斷順序表是否滿了
        if (isFull()){
            System.out.println("順序表已滿");
            //擴(kuò)容
            this.elem = Arrays.copyOf(this.elem,2*this.usize);
        }
        //判斷pos的合法性
        if (pos < 0 || pos > this.usize){
            System.out.println("pos位置不合法");
            return;
        }
        //將pos位置后的數(shù)字后移
        for (int i = this.usize-1; i >= pos; i--) {
            this.elem[i+1] = this.elem[i];
        }
        this.elem[pos] = data;
        this.usize++;
    }

判定是否包含某個元素

public boolean contains(int key){
        for (int i = 0; i < this.usize; i++) {
            if (this.elem[i] == key){
                return true;
            }
        }
        return false;
    }

查找某個對應(yīng)元素的位置

返回它的位置

public int search(int key){
        for (int i = 0; i < this.usize; i++) {
            if (this.elem[i] == key){
                return i;
            }
        }
        return -1;
    }

獲取pos位置的元素

定義一個isEmpty函數(shù)判斷順序表是否為空

public boolean isEmpty(){
        return this.usize == 0;
    }
public int getPos(int pos){
        //判斷順序表是否為空
        if (isEmpty()){
            return -1;
        }
        //判斷pos 位置是否合法
        if (pos < 0 || pos >= this.usize){
            return -1;
        }
        return this.elem[pos];
    }

給pos位置的元素設(shè)為value 更新為新的數(shù)字

 public void setPos(int pos,int value){
        //判斷順序表是否為空
        if (isEmpty()){
            return;
        }
        //判斷pos位置是否合法
        if (pos < 0 || pos >= this.usize){
            return;
        }
        this.elem[pos] = value;
    }

刪除第一次出現(xiàn)的關(guān)鍵字key

查找到關(guān)鍵字,從關(guān)鍵字所在的位置開始到順序表結(jié)束每一項前移,覆蓋掉關(guān)鍵字,長度減少一位

  public void remove(int key){
        int index= search(key);
        if (key == -1){
            System.out.println("關(guān)鍵字不存在");
            return;
        }
        for (int i = key; i < this.usize-1; i++) {
            this.elem[i] = this.elem[i+1];
        }
        this.usize--;
    }

獲取順序表長度

  public int size(){
        return this.usize;
    }

清空順序表

順序表長度直接為0

public void clear(){
        this.usize = 0;
    }

實現(xiàn)這個順序表

定義一個測試類,測試這些函數(shù)的輸出

public class TestDemo {
    public static void main(String[] args) {
        MyArrayList myArrayList = new MyArrayList();
        //給這個順序表寫入1,2,3,4,5
        myArrayList.add(0,1);
        myArrayList.add(1,2);
        myArrayList.add(2,3);
        myArrayList.add(3,4);
        myArrayList.add(4,5);
        //打印這個順序表
        myArrayList.display();
        //判定5這個元素是否在該順序表中
        System.out.println(myArrayList.contains(5));
        //查找5這個元素 返回它的位置
        System.out.println(myArrayList.search(5));
        //獲取3位置的元素
        System.out.println(myArrayList.getPos(3));
        //將4位置的元素重新賦值為9
        myArrayList.setPos(4,9);
        //打印新的順序表
        myArrayList.display();
        //刪除第一次出現(xiàn)的元素4
        myArrayList.remove(4);
        //打印新的順序表
        myArrayList.display();
        //獲取順序表的長度
        System.out.println(myArrayList.size());
        System.out.println("清空");
        //清空順序表
        myArrayList.clear();
        //打印新的順序表
        myArrayList.display();
    }
}

得到結(jié)果:

在這里插入圖片描述

順序表的優(yōu)缺點

優(yōu)點:順序表查找方便,知道這個元素的位置就可以直接找到這個元素。
缺點:擴(kuò)容一般成2倍增長,會有一定的空間浪費。

相關(guān)文章

  • Java中的任務(wù)調(diào)度框架quartz詳細(xì)解析

    Java中的任務(wù)調(diào)度框架quartz詳細(xì)解析

    這篇文章主要介紹了Java中的任務(wù)調(diào)度框架quartz詳細(xì)解析,Quartz 是一個完全由 Java 編寫的開源作業(yè)調(diào)度框架,為在 Java 應(yīng)用程序中進(jìn)行作業(yè)調(diào)度提供了簡單卻強(qiáng)大的機(jī)制,需要的朋友可以參考下
    2023-11-11
  • SpringBoot實現(xiàn)輕量級動態(tài)定時任務(wù)管控及組件化的操作步驟

    SpringBoot實現(xiàn)輕量級動態(tài)定時任務(wù)管控及組件化的操作步驟

    文章介紹了一種在SpringBoot中實現(xiàn)動態(tài)定時任務(wù)的解決方案,基于COLA架構(gòu)理論,封裝到了組件層,該組件支持類級別和方法級別的定時任務(wù)注冊,并提供了易用性和擴(kuò)展性,組件使用Maven形式引入,并且可以通過YAML配置文件進(jìn)行設(shè)置,感興趣的朋友一起看看吧
    2024-11-11
  • Java實現(xiàn)學(xué)生信息管理系統(tǒng)(使用數(shù)據(jù)庫)

    Java實現(xiàn)學(xué)生信息管理系統(tǒng)(使用數(shù)據(jù)庫)

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)學(xué)生信息管理系統(tǒng),使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java中使用Thread類和Runnable接口實現(xiàn)多線程的區(qū)別

    Java中使用Thread類和Runnable接口實現(xiàn)多線程的區(qū)別

    這篇文章主要介紹了使用Thread類和Runnable接口實現(xiàn)多線程的區(qū)別,本文給大家介紹了兩種實現(xiàn)方式的步驟,除了以上兩種多線程實現(xiàn)方式,還可以使用 Callable 接口實現(xiàn),本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • jstl標(biāo)簽基礎(chǔ)開發(fā)步驟(詳解)

    jstl標(biāo)簽基礎(chǔ)開發(fā)步驟(詳解)

    下面小編就為大家?guī)硪黄猨stl標(biāo)簽基礎(chǔ)開發(fā)步驟(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • 使用spring框架ResponseEntity實現(xiàn)文件下載

    使用spring框架ResponseEntity實現(xiàn)文件下載

    這篇文章主要介紹了使用spring框架ResponseEntity實現(xiàn)文件下載,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • SpringBoot 集成 Nebula的操作過程

    SpringBoot 集成 Nebula的操作過程

    這篇文章主要介紹了SpringBoot 集成 Nebula的操作過程,通過示例代碼介紹了java 環(huán)境下如何對 Nebula Graph 進(jìn)行操作,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • restemplate請求亂碼之content-encoding=“gzip“示例詳解

    restemplate請求亂碼之content-encoding=“gzip“示例詳解

    RestTemplate從Spring3.0開始支持的一個HTTP請求工具,它提供了常見的REST請求方案的模板,及一些通用的請求執(zhí)行方法 exchange 以及 execute,接下來通過本文給大家介紹restemplate請求亂碼之content-encoding=“gzip“,需要的朋友可以參考下
    2024-03-03
  • SpringAOP 如何通過JoinPoint獲取參數(shù)名和值

    SpringAOP 如何通過JoinPoint獲取參數(shù)名和值

    這篇文章主要介紹了SpringAOP 通過JoinPoint獲取參數(shù)名和值的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • SpringBoot與SpringMVC中參數(shù)傳遞的原理解析

    SpringBoot與SpringMVC中參數(shù)傳遞的原理解析

    這篇文章主要介紹了SpringBoot與SpringMVC中參數(shù)傳遞的原理,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-07-07

最新評論

合水县| 皋兰县| 德昌县| 吉木萨尔县| 中宁县| 金溪县| 临朐县| 铁力市| 定州市| 堆龙德庆县| 兴和县| 南京市| 合作市| 淮北市| 虹口区| 波密县| 乐平市| 托里县| 舒城县| 兴海县| 盘山县| 栾川县| 陆良县| 泾川县| 沈丘县| 北海市| 白水县| 囊谦县| 东平县| 合江县| 南溪县| 云浮市| 龙南县| 阳原县| 姚安县| 申扎县| 运城市| 平定县| 丁青县| 宁晋县| 潞西市|