欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java數(shù)據(jù)結(jié)構(gòu)和算法中數(shù)組的簡單入門

 更新時間:2019年06月07日 16:04:17   投稿:laozhang  
在本文里小編給大家整理了關(guān)于java數(shù)據(jù)結(jié)構(gòu)和算法中數(shù)組的簡單入門知識點(diǎn)整理,需要的朋友們學(xué)習(xí)下。

一直都對這一塊沒有什么想法,加上不怎么理解,只是懂個大概;最近突然感覺對數(shù)據(jù)結(jié)構(gòu)和算法這塊有點(diǎn)兒興趣,決定還是盡量詳細(xì)的看看這些結(jié)構(gòu)和算法;

話說什么事數(shù)據(jù)結(jié)構(gòu)和算法呢?現(xiàn)在我也說不上來,等我學(xué)的差不多了再來總結(jié)吧!

我隨意借了一張圖,所謂的數(shù)據(jù)結(jié)構(gòu)就是下面這些,我們一個一個的慢慢看(瑪?shù)?,好多。。。?/p>

1.數(shù)組的基本用法

對于數(shù)組應(yīng)該很熟悉了,最開始學(xué)完java八種基本類型之后下一個就是學(xué)的數(shù)組,數(shù)組最大的特點(diǎn)就是除了Object數(shù)組之外,其他的數(shù)組只能存放同一種數(shù)據(jù)類型,而且我們一開始指定數(shù)組就要指定確定的長度,一旦插入的數(shù)據(jù)超過這個長度,就會報錯,其實(shí)就是因?yàn)閿?shù)組的缺點(diǎn)太大,于是就根據(jù)數(shù)組的基礎(chǔ)設(shè)計出來了集合,集合后面說。。

兩種用法,以O(shè)bject數(shù)組為例,這個數(shù)組可以隨意放什么東西,然后用Arrays.toString(xxx)可以打印數(shù)組中的所有元素;

  

任何數(shù)據(jù)類型都有與之對應(yīng)的數(shù)組,比如int[],String[],boolean[]等等

2.簡單實(shí)現(xiàn)對數(shù)組的增刪改查

·用數(shù)組的比較麻煩,還要一個一個慢慢賦值,對我們操作數(shù)據(jù)也不是很方便,那我們就隨意實(shí)現(xiàn)一下我們自己的數(shù)組最簡單的增刪改查吧!

package com.wyq.thread;

public class MyArray {
  private int[] arr;
  //數(shù)組中當(dāng)前存有數(shù)據(jù)的個數(shù),也叫做數(shù)組的有效長度
  private int eles;
  
  //數(shù)組中可容納最大的數(shù)量
  private int length;
  
  //注意這兩個構(gòu)造器,在無參構(gòu)造中調(diào)用有參構(gòu)造并設(shè)置默認(rèn)的數(shù)組長度
  public MyArray() {
    this(10);
  }
  public MyArray(int length){
    eles = 0;
    this.length = length;
    arr = new int[length];
  }
  //獲取當(dāng)前數(shù)組存的實(shí)際數(shù)據(jù)的數(shù)量
  public int size(){
    return eles;
  }
  //展示當(dāng)前數(shù)組中的數(shù)據(jù)
  public void show(){
    System.out.print("數(shù)組中所有的數(shù)分別為:");
    for (int i = 0; i < arr.length; i++) {
      System.out.print(arr[i]+" ");
    }
    System.out.println();
  }
  
  //向數(shù)組中添加數(shù)據(jù)
  public boolean add(int num){
    //假如當(dāng)前數(shù)組已經(jīng)滿了還往里面添加數(shù)據(jù),那就拋出異常并返回false,后續(xù)操作還是會繼續(xù)
    //這里就沒怎么考慮給這個數(shù)組擴(kuò)容
    if (length==eles) {
      try {
        throw new Exception("不好意思,數(shù)組已經(jīng)滿了,你還是別存了!");
      } catch (Exception e) {
        e.printStackTrace();
      }
      return false;
    }else{
      arr[eles] = num;
      eles++;
      return true;
    }
  }
  //在數(shù)組中查有沒有一個xxx數(shù)據(jù),有就返回其索引值,沒有的話就返回null,其實(shí)也可以捕捉異常,可以自己試試
  public Integer find(int value){
    if (arr!=null) {
      for (int i = 0; i < arr.length; i++) {
        if (arr[i]==value) {
          return i;
        }
      }
    }
    return null;
  }
  //刪除數(shù)組中的xx數(shù)據(jù),這里會進(jìn)行很多的判斷,可以說這個方法是數(shù)組中最麻煩的方法了
  //1.先調(diào)用查詢方法看數(shù)組中有沒有我們要刪除的數(shù)據(jù),沒有直接返回-1,有的話就進(jìn)入第二步
  //2.如果這個要刪除的數(shù)據(jù)在數(shù)組最后,那就直接將數(shù)組有效長度減一即可,如果不在最后,進(jìn)入第三步
  //3.一個數(shù)組要刪除中間的個位置,不可能直接將這個數(shù)據(jù)復(fù)制為0或者null,我們只需要把這個位置的后面所有數(shù)據(jù)都向前
  //  移動一個位置即可,這時數(shù)組的最后一個位置就空出來了,我們再把數(shù)組的有效長度減一就行了
  public int delete(int value){
    Integer find = find(value);
    if (find!=null) {
      if (find==eles-1) {
        eles--;
      }else{
        for (int i = find; i < arr.length-1; i++) {
          if (arr[i]==value) {
            arr[i]=arr[i+1];
          }
        }
        eles--;
      }
      
    }
    return -1;  
    
  }
  //更新數(shù)據(jù),先調(diào)用查詢方法找到這個數(shù)據(jù)所在位置,然后直接賦值即可
  public boolean update(int index,int value){
    Integer find = find(index);
    if (find!=null) {
      arr[index]=value;
      return true;
    }
    return false;
  }


  public static void main(String[] args) {
    //由于沒有指定數(shù)組長度,就會用默認(rèn)的10
    MyArray array = new MyArray();
    
    for (int i = 0; i < 10; i++) {
      array.add(i);
    }
    //注意,此時由于數(shù)組滿了我們還添加數(shù)據(jù),就會報異常
    array.add(222);
    array.show();
    array.delete(5);
    System.out.println("刪除數(shù)據(jù)后數(shù)組的實(shí)際大?。?+array.size());
    array.add(100);
    array.update(0, 10);
    array.find(9);
    array.show();
    
  }
}

不知道大家有沒有發(fā)現(xiàn),我們實(shí)現(xiàn)的這個最簡單的數(shù)組有沒有跟集合有點(diǎn)類似啊,就是那個ArrayList,去看看源碼你會發(fā)現(xiàn)我們這個就是最丑陋版的ArrayList,哈哈哈!只是實(shí)現(xiàn)了最簡單的功能!

相關(guān)文章

  • JAVA SPI機(jī)制詳解使用方法

    JAVA SPI機(jī)制詳解使用方法

    Java定義了一套JDBC的接口,但并未提供具體實(shí)現(xiàn)類,而是在不同云廠商提供的數(shù)據(jù)庫實(shí)現(xiàn)包。這篇文章給大家介紹Java的SPI機(jī)制,感興趣的朋友一起看看吧
    2022-07-07
  • Java壓縮解壓縮工具類

    Java壓縮解壓縮工具類

    這篇文章主要為大家詳細(xì)介紹了Java壓縮解壓縮工具類,如何壓縮單個文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Java調(diào)用第三方http接口的四種方式總結(jié)

    Java調(diào)用第三方http接口的四種方式總結(jié)

    這篇文章主要給大家介紹了關(guān)于Java調(diào)用第三方http接口的四種方式,在實(shí)際開發(fā)中我們經(jīng)常會與第三方公司進(jìn)行合作,接入第三方接口,文中給出了詳細(xì)的代碼實(shí)例,需要的朋友可以參考下
    2023-08-08
  • java獲取服務(wù)器基本信息的方法

    java獲取服務(wù)器基本信息的方法

    這篇文章主要介紹了java獲取服務(wù)器基本信息的方法,涉及java獲取系統(tǒng)CPU、內(nèi)存及操作系統(tǒng)等相關(guān)信息的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • java合成模式之神奇的樹結(jié)構(gòu)

    java合成模式之神奇的樹結(jié)構(gòu)

    這篇文章主要介紹了java合成模式,文中運(yùn)用大量的代碼進(jìn)行詳細(xì)講解,希望大家看完本文后能學(xué)習(xí)到相關(guān)的知識,需要的朋友可以參考一下
    2021-08-08
  • Java動態(tài)修改配置即時生效的方式WatchService

    Java動態(tài)修改配置即時生效的方式WatchService

    這篇文章給大家分享了Java動態(tài)修改配置即時生效的方式WatchService的相關(guān)知識點(diǎn)內(nèi)容,有興趣的朋友可以參考學(xué)習(xí)下。
    2018-06-06
  • Java中StringUtils工具類進(jìn)行String為空的判斷解析

    Java中StringUtils工具類進(jìn)行String為空的判斷解析

    這篇文章主要介紹了Java中StringUtils工具類進(jìn)行String為空的判斷解析,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • 詳解如何用spring Restdocs創(chuàng)建API文檔

    詳解如何用spring Restdocs創(chuàng)建API文檔

    這篇文章將帶你了解如何用spring官方推薦的restdoc去生成api文檔。具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • SpringBoot操作mongo實(shí)現(xiàn)方法解析

    SpringBoot操作mongo實(shí)現(xiàn)方法解析

    這篇文章主要介紹了SpringBoot操作mongo實(shí)現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • Nacos+Spring Cloud Gateway動態(tài)路由配置實(shí)現(xiàn)步驟

    Nacos+Spring Cloud Gateway動態(tài)路由配置實(shí)現(xiàn)步驟

    Nacos最近項(xiàng)目一直在使用,本文通過gateway、nacos-consumer、nacos-provider三個簡單模塊來展示:Nacos下動態(tài)路由配置,,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評論