第一夜——數(shù)組與集合——Arrays

簡(jiǎn)介

大家好,我是平頭哥。今天給大家分享的是java中的數(shù)組array。
java中的數(shù)組(array)是一種較高級(jí)的數(shù)據(jù)結(jié)構(gòu)類型,它是相同類型變量的集合,可以使用共同的名字對(duì)它進(jìn)行引用。數(shù)組可以是一維的,也可以是多維的,我們可以通過(guò)數(shù)組下標(biāo)對(duì)其中的元素進(jìn)行訪問(wèn)。

數(shù)組的使用

  • 給數(shù)組賦值。通過(guò)fill方法可以給數(shù)組中的某段元素賦上相同值。
  • 對(duì)數(shù)組排序。通過(guò)sort方法對(duì)數(shù)組中的某段元素排序。
  • 數(shù)組比較。通過(guò)equals方法比較兩個(gè)數(shù)組,判斷數(shù)組中的元素值是否相同。
  • 查找數(shù)組元素。通過(guò)binarySearch方法能對(duì)排過(guò)序的數(shù)組進(jìn)行二分法查找。

實(shí)例代碼

import java.util.Arrays;

/**
 * Created by MXi4oyu on 2018/11/4.
 */
public class learn_array {

    /**
     * 整型數(shù)組的輸出
     * @param array 待輸出的數(shù)組
     */
    public static void outputArray(int [] array){

        if (array!=null){

            for(int i=0;i<array.length;i++){

                System.out.print(array[i]+"    ");
            }

            System.out.println();
        }
    }

    public static void main(String [] args){

        //1、填充數(shù)組,將array0中所有元素的值賦值為1
        int [] array0 = new int[5];

        Arrays.fill(array0,1);
        System.out.println("執(zhí)行Arrays.fill(array0,1)后,array0中的值為:");
        outputArray(array0);

        //2、給數(shù)組賦值,將array0中的第2~3個(gè)元素賦值為8
        Arrays.fill(array0,2,4,8);
        System.out.println("執(zhí)行Arrays.fill(array0,2,4,8)后,array0中的值為:");
        outputArray(array0);

        //3、對(duì)數(shù)組排序,對(duì)數(shù)組中的第2~6個(gè)元素進(jìn)行排序
        int [] array1 = new int[]{7,8,3,12,6,3,5,4};
        Arrays.sort(array1,2,7);
        System.out.println("執(zhí)行Arrays.sort(array1,2,7)后,array1中的值為:");
        outputArray(array1);
        //4、對(duì)整個(gè)數(shù)組進(jìn)行排序
        Arrays.sort(array1);
        System.out.println("執(zhí)行Arrays.sort(array1)后,array1中的值為:");
        outputArray(array1);

        //5、比較數(shù)組元素是否相等
        System.out.println("array0與array1是否相等:");
        System.out.println(Arrays.equals(array0,array1));

        int [] array2 = (int[]) array1.clone();
        System.out.println("array1與array2是否相等:");
        System.out.println(Arrays.equals(array1,array2));

        //6、使用二分法在數(shù)組中查找指定元素所在的下標(biāo)(數(shù)組必須是排好序的,否則結(jié)果不正確)
        Arrays.sort(array1);
        System.out.println("元素8在array1中的位置:"+Arrays.binarySearch(array1,8));
        //如果元素不存在數(shù)組中,則二分法查找結(jié)果為負(fù)數(shù)
        System.out.println("元素9在array1中的位置:"+Arrays.binarySearch(array1,9));

    }

}

輸出結(jié)果:

執(zhí)行Arrays.fill(array0,1)后,array0中的值為:
1    1    1    1    1    
執(zhí)行Arrays.fill(array0,2,4,8)后,array0中的值為:
1    1    8    8    1    
執(zhí)行Arrays.sort(array1,2,7)后,array1中的值為:
7    8    3    3    5    6    12    4    
執(zhí)行Arrays.sort(array1)后,array1中的值為:
3    3    4    5    6    7    8    12    
array0與array1是否相等:
false
array1與array2是否相等:
true
元素8在array1中的位置:6
元素9在array1中的位置:-8

源碼解析

  • 使用Arrays的fill方法對(duì)數(shù)組賦值時(shí),可以指定啟始位置begin和終止位置end。這將只給下標(biāo)在[begin,end)區(qū)間的數(shù)組元素賦值。注意:下標(biāo)為end的元素不會(huì)被賦值。[begin,end)是半開(kāi)區(qū)間。

  • 使用Arrays的sort方法對(duì)數(shù)組進(jìn)行排序時(shí),也可以設(shè)定啟始位置和終止位置。對(duì)區(qū)間[begin,end)內(nèi)的數(shù)組進(jìn)行排序,下標(biāo)為end的元素不參與排序。sort方法按升序進(jìn)行排序。

  • 使用Arrays的binarySearch方法在數(shù)組中查找元素k時(shí),使用的是二分法,即如果數(shù)組中間元素的值比k大時(shí),則只從數(shù)組的前半部分元素中查找;否則只從數(shù)組的后半部分元素中查找,如此遞歸下去。因此,必須要求數(shù)組元素是按升序排序好的。如果找到了元素k,則返回它的下標(biāo)值。如果有多個(gè)元素k,那么返回的結(jié)果可能是這些元素下標(biāo)值的任意一個(gè),并不一定是第k個(gè)元素的下標(biāo)值。(平頭哥表示尼瑪,這有啥用?不解)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、集合入門總結(jié) 集合框架: Java中的集合框架大類可分為Collection和Map;兩者的區(qū)別: 1、Col...
    程序員歐陽(yáng)閱讀 11,806評(píng)論 2 61
  • 廢話不多說(shuō),自己進(jìn)入今天的主題 1、面向?qū)ο蟮奶卣饔心男┓矫妫?答:面向?qū)ο蟮奶卣髦饕幸韵聨讉€(gè)方面: - 抽象:...
    傳奇內(nèi)服號(hào)閱讀 2,530評(píng)論 1 31
  • 新月如鉤霜掠影, 萬(wàn)里銀屏, 夜半涼初醒。 玉樹(shù)佇立風(fēng)物靜, 鄰家小院多安寧。 落葉飄零驚雁陣, 犬吠雞鳴, 三唱...
    黔中吟閱讀 337評(píng)論 0 0
  • 洋老板不姓洋,他以前也不是個(gè)老板。 大家叫他洋老板也是畢業(yè)之后的事了。畢業(yè)之后,屌絲們都在為生計(jì)奔波,而洋老板仰仗...
    瘋平兒閱讀 307評(píng)論 1 1
  • 在我的記憶中,每到臘月二十四的這一天都是臘月這一個(gè)月中最忙碌的日子。從一進(jìn)臘月開(kāi)始,媽、大姐、二姐就開(kāi)始蒸饅頭、豆...
    支子花開(kāi)3閱讀 682評(píng)論 0 0

友情鏈接更多精彩內(nèi)容