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

java基礎(chǔ)之?dāng)?shù)組常用操作總結(jié)(必看篇)

 更新時(shí)間:2017年06月03日 09:56:57   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇java基礎(chǔ)之?dāng)?shù)組常用操作總結(jié)(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

常用的對(duì)數(shù)組進(jìn)行的操作

1、求數(shù)組中最大值,最小值

思路:假設(shè)下標(biāo)為0的元素是最大值,遍歷數(shù)組,依次跟max進(jìn)行比較,如果有元素比這個(gè)max還大,則把這個(gè)值賦給max。最小值同樣

public class TestArray{
  public static void main(String[] args){
    int[] arr={23,45,234,576,34,87,34,12,67};
    int max=arr[0];
    int min=arr[0];
    for(int i=0;i<arr.length;i++){
      if(arr[i]>max){
        max=arr[i];
      }
      if(arr[i]<min){
        min=arr[i];
      }
    }
    System.out.println("數(shù)組中最大值為:"+max);
    System.out.println("數(shù)組中最小值為:"+min);
  }
}

2、查找數(shù)組中是否存在某個(gè)元素

import java.util.Scanner;
public class TestArray{
  public static void main(String[] args){
    Scanner in=new Scanner(System.in);
    int[] arr={23,45,234,576,34,87,34,12,67};
    System.out.println("請(qǐng)輸入你要查找的元素");
    int element=in.nextInt();
    int i,flag=0;
    for(i=0;i<arr.length;i++){
      if(arr[i]==element){
        flag=1;
        break;
      }
    }
    if(flag==1){
      System.out.println("你要查找的元素的下標(biāo)為:"+i);
    }else{
      System.out.println("你要查找的元素不存在");
    }
  }
}

(2)、用二分查找法查找數(shù)組中是否存在某個(gè)元素

前提:待查找的數(shù)組必須是有序的(大小有序)

原理:將待查找的元素與數(shù)組中中間下標(biāo)的元素進(jìn)行比較,如果大于中間元素,去右邊查找,小于中間元素,去左邊查找。

public static int binarySearch(int[] arr,int ele){
    int left=0;
    int right=arr.length-1;
    int mid;
    int index=-1;
    while(left<=right){
      mid=(left+right)/2;
      if(arr[mid]==ele){
        index=mid;
        break;
      }else if(arr[mid]<ele){
        left=mid+1;
      }else if(arr[mid]>ele){
        right=mid-1;
      }
    }
    return index;
  }

3、對(duì)數(shù)組進(jìn)行排序

(1)、冒泡排序

原理:相鄰元素進(jìn)行比較,小的往前趕,大的往后冒,最大值出現(xiàn)的最大索引處

分析:第一次進(jìn)行比較,大的往后冒,會(huì)把最大值排在最大索引處

第二次進(jìn)行比較,因?yàn)樽畲笾狄呀?jīng)確定了,只需要比較前n-1個(gè)元素即可,確定一個(gè)第二大值排在第二大索引處

依次確定第三大值,第四大值.............

結(jié)論:N個(gè)數(shù)字來(lái)排隊(duì),兩兩比較小靠前,外層循環(huán)n-1,內(nèi)層循環(huán)n-1-i

public class TestArray{
  public static void main(String[] args){
    int[] arr={10,3,8,1,6};
    //外層循環(huán)控制比較輪數(shù)
    for(int i=0;i<arr.length-1;i++){
      //內(nèi)層循環(huán)控制每輪比較次數(shù)
      for(int j=0;j<arr.length-1-i;j++){
        if(arr[j]>arr[j+1]){
          int temp=arr[j];
          arr[j]=arr[j+1];
          arr[j+1]=temp;
        }
      }
    }
    //遍歷數(shù)組
    for(int i=0;i<arr.length;i++){
      System.out.println(arr[i]);
    }
  }
}

(2)、選擇排序

原理:從下標(biāo)0處開始,依次和后邊的元素進(jìn)行比較,如果后面元素小于下標(biāo)0的元素,換位。拿新的下標(biāo)為0的元素和后邊的進(jìn)行比較。第一次完畢,最小值出現(xiàn)在索引0處

例:{10,3,8,1,6}

第一輪比較,從0下標(biāo)元素開始,依次和后邊的元素進(jìn)行比較,先是10和3進(jìn)行比較,10<3,交換位置,下標(biāo)0的元素變成3,{3,10,8,1,6};再拿3和8比較,3<8,不換位;3和1進(jìn)行比較,3>1,換位

{1,10,8,3,6},然后拿1和6進(jìn)行比較,1<6,不換位置。第一輪結(jié)束,{1,10,8,3,6}

第二輪比較,上一輪已經(jīng)確定了下標(biāo)0的元素為最小值,這輪比較從下標(biāo)1開始,先是10和8比較,換位{1,8,10,3,6};8和3比較,換位{1,3,10,8,6},3和6比較,不換位。第二輪結(jié)束,確定倒數(shù)第二小的元素在下標(biāo)1位置。

........

共比較length-1輪。

public class TestArray{
  public static void main(String[] args){
    int[] arr={10,3,8,1,6};
    for(int i=0;i<arr.length-1;i++){
      for(int j=i+1;j<arr.length;j++){
        if(arr[i]>arr[j]){
          int temp=arr[i];
          arr[i]=arr[j];
          arr[j]=temp;
        }
      }
    }
    //遍歷數(shù)組
    for(int i=0;i<arr.length;i++){
      System.out.println(arr[i]);
    }
  }
}

4、刪除數(shù)組中元素

(1)根據(jù)下標(biāo)刪除元素(空位補(bǔ)0)

public static void delete(int[] arr,int index){
    for(int i=index;i<arr.length-1;i++){
      arr[i]=arr[i+1];
    }
    arr[arr.length-1]=0;
    System.out.println(Arrays.toString(arr));
  }

(2)根據(jù)輸入的元素刪除數(shù)組中對(duì)應(yīng)的元素

public static void delete(int[] arr,int ele){
    int index=-1;
    for(int i=0;i<arr.length;i++){
      if(arr[i]==ele){
        index=i;
      }
    }
    for(int i=index;i<arr.length-1;i++){
      arr[i]=arr[i+1];
    }
    arr[arr.length-1]=0;
    System.out.println(Arrays.toString(arr));
  }

下面介紹一些API里面常見的對(duì)數(shù)組的操作

在java中,除java.lang包下的類和接口可以直接使用外,其他包下的類或接口在使用時(shí)需要先導(dǎo)包。

java.util.Arrays類:此類包含用來(lái)操作數(shù)組(比如排序和搜索)的各種方法。

這些都是靜態(tài)方法,可以類名.方法名直接使用,這里都以int型數(shù)組為例

1、對(duì)數(shù)組進(jìn)行快速排序

Arrays.sort(int[] arr);對(duì)傳入的數(shù)組默認(rèn)進(jìn)行升序排序

2、返回指定數(shù)組內(nèi)容的字符串表現(xiàn)形式。

Arrays.toString(int[] arr);

3、使用二分法搜索制定數(shù)組中的某個(gè)元素的下標(biāo)

Arrays.binarySearch(int[] arr);

4、將將指定的 int 值分配給指定 int 型數(shù)組的每個(gè)元素。

Arrays.fill(int[] arr,int val);

5、復(fù)制指定的數(shù)組,截取或用 0 填充(如有必要),以使副本具有指定的長(zhǎng)度。

Arrays.copyOf(int[] arr,int newLength);它的返回值是一個(gè)數(shù)組

6、將指定數(shù)組的指定范圍復(fù)制到一個(gè)新數(shù)組。 包含起始位置但不包含結(jié)束位置。

Arrays.copyOfRange(int[] arr,int from,int to);它的返回值是一個(gè)數(shù)組

 

其他數(shù)組知識(shí):

1、命令行參數(shù):可以在執(zhí)行java命令時(shí)為main方法傳入?yún)?shù)值。

用法:運(yùn)行java命令時(shí)傳入命令行參數(shù): java 類名 "值1" "值2"...

public static void main(String[] args){},我們可以看到main方法是一個(gè)有參的方法,參數(shù)是一個(gè)字符串?dāng)?shù)組,在命令行為main方法傳值時(shí),傳入的值都保存在args字符數(shù)組里。

注意:多個(gè)參數(shù)值之間用空格分割。參數(shù)的值將會(huì)保存到字符串?dāng)?shù)組傳入main方法,下標(biāo)從零開始。

在獲取命令行參數(shù)時(shí)需要注意下標(biāo)不能越界,最大下標(biāo)應(yīng)該為參數(shù)的個(gè)數(shù)-1

public static void main(String[] args){
     for(int i=0;i<args.length;i++){
         System.out.println(args[i]);
     }
 }

2、可變參數(shù)

可變參數(shù)是java1.5之后的新特性,可以代表零到多個(gè)相同數(shù)據(jù)類型的變量,是為了解決因參數(shù)個(gè)數(shù)的變化而導(dǎo)致過(guò)多的方法重載問(wèn)題。

注意:

1、可變參數(shù)只能用于形式參數(shù)(方法定義時(shí)),可以把可變參數(shù)當(dāng)作數(shù)組來(lái)處理。

2、一個(gè)方法在最多只能有一個(gè)可變參數(shù),可變參數(shù)必須作為最后一個(gè)參數(shù)。

3、調(diào)用帶可變參數(shù)的方法時(shí),數(shù)據(jù)類型必須與可變參數(shù)的類型對(duì)應(yīng)。

public class Test1 {
  public static void main(String[] args){
    double sum=add(4,2.1,3.4,1.2);
    System.out.println(sum);
  }
  public static double add(int a,double...b){
    double sum=a;
    for(int i=0;i<b.length;i++){
      sum+=b[i];
    }
    return sum;
  }
}

例題:

合并數(shù)組操作:現(xiàn)有如下一個(gè)數(shù)組:   int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}   要求將以上數(shù)組中值為0的項(xiàng)去掉,將不為0的值存入一個(gè)新的數(shù)組,生成的新數(shù)組為: int newArr [] ={1,3,4,5,6,6,5,4,7,6,7,5} 

思路: 確定出不為0的個(gè)數(shù),這樣可以開辟新數(shù)組;從舊的數(shù)組之中,取出內(nèi)容,并將其賦給新開辟的數(shù)組。

public class Test1 {
  public static void main(String[] args){
    int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
    int[] arr=mergeArrays(oldArr);
    System.out.println(Arrays.toString(arr));
  }
  public static int[] mergeArrays(int[] oldArr){
    int count=0;
    for(int i=0;i<oldArr.length;i++){
      if(oldArr[i]!=0){
        count++;
      }
    }
    int[] newArr=new int[count];
    int index=0;
    for(int i=0;i<oldArr.length;i++){
      if(oldArr[i]!=0){
        newArr[index]=oldArr[i];
        index++;
      }
    }
    return newArr;
  }
}

2、使用二分法查找有序數(shù)組中元素。找到返回索引,不存在輸出-1。使用遞歸實(shí)現(xiàn)

public class Test1 {
  public static void main(String[] args){
    int[] arr={1,2,3,4,5,6,7,8};
    int index=binarySearch(arr,6,0,arr.length-1);
    System.out.println(index);
  }
  public static int binarySearch(int[] arr,int ele,int left,int right){
    int mid=(left+right)/2;
    if(arr[mid]==ele){
      return mid;
    }else if(arr[mid]<ele){
      return binarySearch(arr,ele,mid+1,right);
    }else if(arr[mid]>ele){
      return binarySearch(arr,ele,left,mid-1);
    }
    return -1;
  }
}

以上這篇java基礎(chǔ)之?dāng)?shù)組常用操作總結(jié)(必看篇)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • idea中提示Class 'xxx' is never used的解決

    idea中提示Class 'xxx' is never us

    這篇文章主要介紹了idea中提示Class 'xxx' is never used的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • java實(shí)現(xiàn)學(xué)生成績(jī)錄入系統(tǒng)

    java實(shí)現(xiàn)學(xué)生成績(jī)錄入系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)學(xué)生成績(jī)錄入系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • java編寫簡(jiǎn)單的ATM存取系統(tǒng)

    java編寫簡(jiǎn)單的ATM存取系統(tǒng)

    這篇文章主要介紹了java編寫簡(jiǎn)單的ATM存取系統(tǒng),附上思路和具體實(shí)現(xiàn)代碼,適合新人練手用,推薦給小伙伴們。
    2015-02-02
  • 詳解springMVC之與json數(shù)據(jù)交互方法

    詳解springMVC之與json數(shù)據(jù)交互方法

    本篇文章主要介紹了詳解springMVC之與json數(shù)據(jù)交互方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • spring boot使用logback實(shí)現(xiàn)多環(huán)境日志配置詳解

    spring boot使用logback實(shí)現(xiàn)多環(huán)境日志配置詳解

    這篇文章主要介紹了spring boot使用logback實(shí)現(xiàn)多環(huán)境日志配置詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • mybatis查詢oracle long類型的踩坑記錄

    mybatis查詢oracle long類型的踩坑記錄

    這篇文章主要介紹了mybatis查詢oracle long類型的踩坑記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 淺談java Collection中的排序問(wèn)題

    淺談java Collection中的排序問(wèn)題

    下面小編就為大家?guī)?lái)一篇淺談java Collection中的排序問(wèn)題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • Netty分布式客戶端接入流程初始化源碼分析

    Netty分布式客戶端接入流程初始化源碼分析

    這篇文章主要介紹了Netty分布式客戶端接入流程初始化源碼分析,有關(guān)channelConfig有關(guān)的初始化過(guò)程剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-03-03
  • Springboot訪問(wèn)html頁(yè)面的教程詳解

    Springboot訪問(wèn)html頁(yè)面的教程詳解

    這篇文章主要介紹了Springboot訪問(wèn)html頁(yè)面的教程,本文圖文并茂給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2018-03-03
  • 多個(gè)springboot項(xiàng)目如何使用一個(gè)外部共同的application.yml

    多個(gè)springboot項(xiàng)目如何使用一個(gè)外部共同的application.yml

    這篇文章主要介紹了多個(gè)springboot項(xiàng)目如何使用一個(gè)外部共同的application.yml問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05

最新評(píng)論

怀远县| 大港区| 南开区| 临高县| 江阴市| 信宜市| 册亨县| 诸城市| 安龙县| 黎川县| 宁河县| 台南市| 湟源县| 巫山县| 宣恩县| 北流市| 根河市| 沅江市| 新巴尔虎左旗| 商洛市| 罗源县| 花莲县| 滦南县| 丹棱县| 肇州县| 胶南市| 聊城市| 菏泽市| 建昌县| 滦平县| 长岭县| 乌拉特后旗| 商水县| 淮滨县| 泾川县| 泽州县| 葵青区| 聂拉木县| 翼城县| 会东县| 霍林郭勒市|