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

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

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

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

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

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

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

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

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

  

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

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

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

package com.wyq.thread;

public class MyArray {
  private int[] arr;
  //數(shù)組中當前存有數(shù)據(jù)的個數(shù),也叫做數(shù)組的有效長度
  private int eles;
  
  //數(shù)組中可容納最大的數(shù)量
  private int length;
  
  //注意這兩個構造器,在無參構造中調用有參構造并設置默認的數(shù)組長度
  public MyArray() {
    this(10);
  }
  public MyArray(int length){
    eles = 0;
    this.length = length;
    arr = new int[length];
  }
  //獲取當前數(shù)組存的實際數(shù)據(jù)的數(shù)量
  public int size(){
    return eles;
  }
  //展示當前數(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){
    //假如當前數(shù)組已經(jīng)滿了還往里面添加數(shù)據(jù),那就拋出異常并返回false,后續(xù)操作還是會繼續(xù)
    //這里就沒怎么考慮給這個數(shù)組擴容
    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,其實也可以捕捉異常,可以自己試試
  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ù),這里會進行很多的判斷,可以說這個方法是數(shù)組中最麻煩的方法了
  //1.先調用查詢方法看數(shù)組中有沒有我們要刪除的數(shù)據(jù),沒有直接返回-1,有的話就進入第二步
  //2.如果這個要刪除的數(shù)據(jù)在數(shù)組最后,那就直接將數(shù)組有效長度減一即可,如果不在最后,進入第三步
  //3.一個數(shù)組要刪除中間的個位置,不可能直接將這個數(shù)據(jù)復制為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ù),先調用查詢方法找到這個數(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ù)組長度,就會用默認的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ù)組的實際大?。?+array.size());
    array.add(100);
    array.update(0, 10);
    array.find(9);
    array.show();
    
  }
}

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

相關文章

最新評論

红安县| 云安县| 三门县| 拜泉县| 乌鲁木齐市| 桃江县| 舟山市| 临安市| 高唐县| 汝南县| 巩义市| 诸城市| 东港市| 西盟| 腾冲县| 大埔区| 忻州市| 江川县| 双桥区| 商南县| 平顶山市| 泰和县| 斗六市| 衡南县| 通辽市| 福泉市| 全南县| 同仁县| 丽江市| 壶关县| 祥云县| 琼海市| 夏邑县| 定兴县| 东兰县| 安图县| 富顺县| 宣武区| 巢湖市| 花垣县| 连南|