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

Java中Arrays數(shù)組工具類的基本使用詳解

 更新時(shí)間:2021年12月12日 10:22:29   作者:soberw-  
Arrays類中的方法都是static修飾的靜態(tài)方法,在使用的時(shí)候可以直接使用類名進(jìn)行調(diào)用,而"不用"使用對(duì)象來(lái)調(diào)用(注意:是"不用"?而不是?"不能"),這篇文章主要給大家介紹了關(guān)于Java中Arrays數(shù)組工具類的基本使用,需要的朋友可以參考下

方法一覽表

方法名 簡(jiǎn)要描述
asList() 返回由指定數(shù)組支持的固定大小的列表。
sort() 將數(shù)組排序(升序)
parallelSort() 將指定的數(shù)組按升序排序
binarySearch() 使用二分搜索法快速查找指定的值(前提是數(shù)組必須是有序的)
compare() 按字典順序比較兩個(gè)數(shù)組
compareUnsigned() 按字典順序比較兩個(gè)數(shù)組,將數(shù)字元素處理為無(wú)符號(hào)
copyOf() 填充復(fù)制數(shù)組
copyOfRange() 將數(shù)組的指定范圍復(fù)制到新數(shù)組
equals() 比較兩個(gè)數(shù)組
deepEquals() 比較兩個(gè)數(shù)組深度
toString() 將數(shù)組轉(zhuǎn)換為字符串
deepToString() 將一個(gè)多維數(shù)組轉(zhuǎn)換為字符串
fill() 將指定元素填充給數(shù)組每一個(gè)元素
mismatch() 查找并返回兩個(gè)數(shù)組之間第一個(gè)不匹配的索引,如果未找到則返回-1
parallelPrefix() 使用提供的函數(shù)對(duì)數(shù)組元素進(jìn)行操作
parallelSetAll() 使用提供的生成器函數(shù)并行設(shè)置指定數(shù)組的所有元素以計(jì)算每個(gè)元素
setAll() 使用提供的生成器函數(shù)設(shè)置指定數(shù)組的所有元素以計(jì)算每個(gè)元素

快速定位詳細(xì)操作

接下來(lái)我用代碼一一舉例演示。

asList()

功能:返回由指定數(shù)組支持的固定大小的列表

參數(shù):asList?(T… a)

返回值:一個(gè)列表

代碼示例

    @Test
    public void asListTest() {
        List<String> ss = Arrays.asList("hello", "world");
//        List<String> ss1 = Arrays.asList("hello", "world",1);   報(bào)錯(cuò),類型必須一直(泛型)
        System.out.println(ss);  //[hello, world]
        
//        ss.add("java");  //UnsupportedOperationException  會(huì)報(bào)錯(cuò)
//        ss.remove(1);   //UnsupportedOperationException  會(huì)報(bào)錯(cuò)
        
        System.out.println(ss.get(0));  //hello
        ss.set(0, "java");
        System.out.println(ss);  //[java, world]

    }

注意

將這一數(shù)組轉(zhuǎn)換為列表后,對(duì)應(yīng)的列表是不支持添加和刪除操作的,否則會(huì)報(bào)錯(cuò)
但可以修改和獲取元素

toString() 和 deepToString()

功能:將數(shù)組轉(zhuǎn)換為字符串

參數(shù):待轉(zhuǎn)化數(shù)組

返回值:轉(zhuǎn)化后的字符串

代碼示例

    @Test
    public void asListTest() {
        List<String> ss = Arrays.asList("hello", "world");
//        List<String> ss1 = Arrays.asList("hello", "world",1);   報(bào)錯(cuò),類型必須一直(泛型)
        System.out.println(ss);  //[hello, world]
        
//        ss.add("java");  //UnsupportedOperationException  會(huì)報(bào)錯(cuò)
//        ss.remove(1);   //UnsupportedOperationException  會(huì)報(bào)錯(cuò)
        
        System.out.println(ss.get(0));  //hello
        ss.set(0, "java");
        System.out.println(ss);  //[java, world]

    }

sort() 和 parallelSort()

功能:都是將數(shù)組排序(默認(rèn)升序,支持lambda,泛型)
參數(shù)

  • sort?(Object[] a[, int fromIndex, int toIndex])
  • 或者sort?(T[] a[, int fromIndex, int toIndex,] Comparator<? super T> c)
  • parallelSort(Object[] a[, int fromIndex, int toIndex])
  • 或者parallelSort?(T[] a[, int fromIndex, int toIndex,] Comparator<?
    super T> c)

返回值:無(wú)

代碼示例

    @Test
    public void sortTest() {
        String[] str = {"abc", "add", "java", "hello", "javascript"};
        int[] ii = {1, 8, 99, 222, 35};

        System.out.println(Arrays.toString(str));
        System.out.println(Arrays.toString(ii));

        //單參數(shù)情況
        //Arrays.sort(str);  默認(rèn)全排,字母會(huì)按照字母表順序
        //Arrays.sort(ii);
        //System.out.println(Arrays.toString(str));  //[abc, add, hello, java, javascript]
        //System.out.println(Arrays.toString(ii));  //[1, 8, 35, 99, 222]

        //多參數(shù)情況
        //Arrays.sort(str,2,4);   只排列指定范圍內(nèi)的
        //Arrays.sort(ii,2,4);
        //System.out.println(Arrays.toString(str));  //[abc, add, hello, java, javascript]
        //System.out.println(Arrays.toString(ii));  //[1, 8, 99, 222, 35]

        //可傳入lambda表達(dá)式(多參數(shù)情況可指定開始結(jié)束位置)
//        Arrays.sort(str, (a, b) -> b.compareTo(a));  //降序
//        System.out.println(Arrays.toString(str));  //[javascript, java, hello, add, abc]


        //parallelSort()方法目前我實(shí)驗(yàn)感覺(jué)與sort()相差無(wú)幾,基本相似
        Arrays.parallelSort(str);
        System.out.println(Arrays.toString(str));  //[abc, add, hello, java, javascript]

        Arrays.parallelSort(str,(a,b)->b.compareTo(a));
        System.out.println(Arrays.toString(str));  //[javascript, java, hello, add, abc]
    }

binarySearch()

功能:使用二分搜索法快速查找指定的值(前提是數(shù)組必須是有序的,支持lambda表達(dá)式,泛型)
參數(shù):binarySearch?(Object[] a[, int fromIndex, int toIndex], Object key)

返回值:有則返回對(duì)應(yīng)下標(biāo),無(wú)則返回負(fù)值

代碼示例

    @Test
    public void binarySearchTest() {
        int[] a = {1, 5, 7, 4, 6, 7, 8, 4, 9, 0};
        Arrays.sort(a);  //必須先排序
        System.out.println(Arrays.toString(a));
        //[0, 1, 4, 4, 5, 6, 7, 7, 8, 9]
        System.out.println(Arrays.binarySearch(a, 4));  //2
        System.out.println(Arrays.binarySearch(a, 11));  //-11
        //也可指定范圍查找,其查找機(jī)制是折半查找,每次縮小一半范圍
    }

compare() 和 compareUnsigned()

功能:按字典順序比較兩個(gè)數(shù)組

參數(shù)

compare?(T[] a, 【int aFromIndex, int aToIndex】, T[] b,【 int bFromIndex, int bToIndex】,【 Comparator<? super T> cmp】)

返回值

  • 如果第一個(gè)和第二個(gè)數(shù)組相等并且包含相同順序的相同元素,則值為0 ;
  • 如果第一個(gè)數(shù)組按字典順序小于第二個(gè)數(shù)組,則值小于0 ;
  • 如果第一個(gè)數(shù)組按字典順序大于第二個(gè)數(shù)組,則值大于0

代碼示例

    @Test
    public void compareTest() {
        int[] a = {1, 2, 3, 4};
        int[] b = {1, 2, 3, 4, 5};
        int[] c = {1, 2, 3, 4, 5};
        String[] s1 = {"java","hello","c++"};
        String[] s2 = {"java","hello"};

//        System.out.println(Arrays.compare(a,b));  //-1
//        System.out.println(Arrays.compare(b,a));  //1
//        System.out.println(Arrays.compare(b,c));  //0

        System.out.println(Arrays.compare(s1,s2));  //1
        //也可劃定范圍去比較,或者傳入lambda



//        System.out.println(Arrays.compareUnsigned(s1,s2));//報(bào)錯(cuò)
        System.out.println(Arrays.compareUnsigned(a,b));  //-1
    }

注意

compareUnsigned()只能比較byte(),short(),int(),long()數(shù)字型數(shù)組,可以劃定比較范圍,但不支持lambda

copyOf() 和 copyOfRange()

功能:復(fù)制填充數(shù)組

參數(shù)

  • copyOf?(int[] original, int newLength)…
  • copyOf?(T[] original, int newLength)
  • copyOfRange?(int[] original, int from, int to)…
  • copyOfRange?(T[] original, int from, int to)
  • copyOfRange?(U[] original, int from, int to, 類<? extends T[]> newType)

返回值:復(fù)制填充后的數(shù)組

代碼示例

    @Test
    public void copyOfTest() {

        //copyOf

        int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
        int[] arr1 = Arrays.copyOf(arr, 5);  //拷貝長(zhǎng)度為5,第二個(gè)參數(shù)為新數(shù)組的長(zhǎng)度
        int[] arr2 = Arrays.copyOf(arr, 15);
        System.out.println(Arrays.toString(arr1));  //[1, 2, 3, 4, 5]
        System.out.println(Arrays.toString(arr2));  //[1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0]

        arr[0] = 20;   //改變?cè)瓟?shù)組
        System.out.println(Arrays.toString(arr));     //原數(shù)組改變
        System.out.println(Arrays.toString(arr1));   //復(fù)制后的數(shù)組不變

        String[] str = {"java","hello","world"};
        String[] str1 = Arrays.copyOf(str,2);
        String[] str2 = Arrays.copyOf(str,5);
        System.out.println(Arrays.toString(str1));  //[java, hello]
        System.out.println(Arrays.toString(str2));  //[java, hello, world, null, null]




        //copyOfRange()

        int[] arrs = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
        int[] arr3 = Arrays.copyOfRange(arrs,2,8);   //[3, 4, 5, 6, 7, 8]
        int[] arr4 = Arrays.copyOfRange(arrs,5,15);  //[6, 7, 8, 9, 0, 0, 0, 0, 0, 0]
        System.out.println(Arrays.toString(arr3));
        System.out.println(Arrays.toString(arr4));
        arrs[6] = 99;  //改變?cè)瓟?shù)組
        System.out.println(Arrays.toString(arrs));   //[1, 2, 3, 4, 5, 6, 99, 8, 9, 0]  原數(shù)組改變
        System.out.println(Arrays.toString(arr3));   //[3, 4, 5, 6, 7, 8]  復(fù)制后的不會(huì)隨著改變

    }

注意

copyOf()是從原數(shù)組0位置開始拷貝指定長(zhǎng)度到新數(shù)組
copyOfRange()是從原數(shù)組中指定范圍拷貝到新數(shù)組
如果指定長(zhǎng)度或者范圍超出原數(shù)組范圍,則超出部分會(huì)補(bǔ)上此數(shù)據(jù)類型的默認(rèn)值,如String類型會(huì)補(bǔ)null,int型會(huì)補(bǔ)0

equals()

功能:比較兩個(gè)數(shù)組

參數(shù)

  • equals?(int[] a,【 int aFromIndex, int aToIndex】, int[] b,【 int bFromIndex, int bToIndex】)…
  • equals?(T[] a, 【int aFromIndex, int aToIndex】, T[] b,【 int bFromIndex, int bToIndex】, Comparator<? super T> cmp)

返回值:boolean

代碼示例

@Test
    public void equalsTest() {
        int[] a = {1, 2, 3, 4, 5, 6};
        int[] b = {6, 5, 3, 4, 2, 1};

        System.out.println(Arrays.equals(a, b));   //false
        System.out.println(Arrays.equals(a, 2, 3, b, 2, 3));  //指定比較范圍  true
    }

deepEquals()

功能:比較兩個(gè)數(shù)組的深度

參數(shù):deepEquals?(Object[] a1, Object[] a2)

返回值:boolean

代碼示例

    @Test
    public void deepEqualsTest() {
        String[] s1 = {"java", "hello", "c++"};
        String[] s2 = {"java", "hello"};
        String[] s3 = {"java", "hello", "c++"};
        System.out.println(Arrays.deepEquals(s1, s2));  //false
        System.out.println(Arrays.deepEquals(s1, s3));  //true

        String[][] s4 = {{"hello"}, {"java"}, {"c++"}, {"python"}};
        String[][] s5 = {{"hello"}, {"java"}, {"c++"}, {"python"}};
        System.out.println(Arrays.deepEquals(s4, s5));  //true
        System.out.println(Arrays.equals(s4, s5));    //false
        
        int[] a = {1,2};
        int[] b = {1,2};
//        System.out.println(Arrays.deepEquals(a,b));  //報(bào)錯(cuò)
        
    }

比較equals()deepEquals()方法

相同點(diǎn)

兩者都是比較數(shù)組是否相等的方法

不同點(diǎn)

  • equals默認(rèn)從頭比較到尾,也可以指定范圍,但是deepEquals不能指定范圍
  • 可以比較多維數(shù)組,equals不能
  • deepEquals不支持比較基本類型數(shù)組,equals支持

?fill()

功能:將指定元素填充給數(shù)組每一個(gè)元素

參數(shù):fill?(int[] a, 【int fromIndex, int toIndex】, int val)

返回值:無(wú)

代碼示例

    @Test
    public void fillTest() {
        String[] a = {"a", "b", "c", "d", "e", "f"};
        System.out.println(Arrays.toString(a));  //[a, b, c, d, e, f]
        Arrays.fill(a, "java");
        System.out.println(Arrays.toString(a));  //[java, java, java, java, java, java]

        String[] b = {"a", "b", "c", "d", "e", "f"};
        System.out.println(Arrays.toString(b));  //[a, b, c, d, e, f]
        Arrays.fill(b, 2, 5, "java");
        System.out.println(Arrays.toString(b));  //[a, b, java, java, java, f]
        
        //默認(rèn)全填充,也可以指定范圍,會(huì)改變?cè)瓟?shù)組
    }

mismatch()

功能:查找并返回兩個(gè)數(shù)組之間第一個(gè)不匹配的索引,如果未找到則返回-1
參數(shù)

  • mismatch?(int[] a, 【int aFromIndex, int aToIndex】, int[] b,【 int bFromIndex, int bToIndex】)
  • mismatch?(T[] a, 【int aFromIndex, int aToIndex】, T[] b,【 int bFromIndex, int bToIndex】, Comparator<? super T> cmp)

返回值:兩個(gè)數(shù)組之間第一個(gè)不匹配的索引,未找到不匹配則返回-1。

代碼示例

    @Test
    public void mismatchTest() {
        String[] s1 = {"java", "c++", "html", "css", "Javascript", "world"};
        String[] s2 = {"world", "c++", "html", "css", "Javascript"};
        System.out.println(Arrays.mismatch(s1, s2)); //0
        System.out.println(Arrays.mismatch(s1, 1, 4, s2, 1, 4));  //-1
        System.out.println(Arrays.mismatch(s1, 1, 5, s2, 1, 4));  //3

    }

parallelPrefix()

功能:使用提供的函數(shù)并行地累積給定數(shù)組的每個(gè)元素。
參數(shù)

  • parallelPrefix?(int[] array, 【int fromIndex, int toIndex】, IntBinaryOperator op)
  • parallelPrefix?(T[] array, 【int fromIndex, int toIndex】, BinaryOperator op)

返回值:無(wú)

代碼示例

 @Test
    public void parallelPrefixTest() {
        String[] s1 = {"java", "c++", "html", "css", "Javascript", "world"};
        System.out.println(Arrays.toString(s1));   //[java, c++, html, css, Javascript, world]
        Arrays.parallelPrefix(s1, String::concat);
        System.out.println(Arrays.toString(s1));   //[java, javac++, javac++html, javac++htmlcss, javac++htmlcssJavascript, javac++htmlcssJavascriptworld]

        int[] a = {1, 2, 3, 4, 5};
        System.out.println(Arrays.toString(a));  //[1, 2, 3, 4, 5]
        Arrays.parallelPrefix(a, (x, y) -> x * y);
        System.out.println(Arrays.toString(a));  //[1, 2, 6, 24, 120]
        Arrays.parallelPrefix(a, 2, 4, (x, y) -> x / y);
        System.out.println(Arrays.toString(a));  //[1, 2, 6, 0, 120]  也可指定范圍
    }

setAll() 和 parallelSetAll()

功能:使用提供的生成器函數(shù)設(shè)置指定數(shù)組的所有元素以計(jì)算每個(gè)元素。
參數(shù)

  • parallelSetAll?(T[] array, IntFunction<? extends T> generator)
  • setAll?(T[] array, IntFunction<? extends T> generator)

返回值:無(wú)

代碼示例

 @Test
    public void parallelPrefixTest() {
        String[] s1 = {"java", "c++", "html", "css", "Javascript", "world"};
        System.out.println(Arrays.toString(s1));   //[java, c++, html, css, Javascript, world]
        Arrays.parallelPrefix(s1, String::concat);
        System.out.println(Arrays.toString(s1));   //[java, javac++, javac++html, javac++htmlcss, javac++htmlcssJavascript, javac++htmlcssJavascriptworld]

        int[] a = {1, 2, 3, 4, 5};
        System.out.println(Arrays.toString(a));  //[1, 2, 3, 4, 5]
        Arrays.parallelPrefix(a, (x, y) -> x * y);
        System.out.println(Arrays.toString(a));  //[1, 2, 6, 24, 120]
        Arrays.parallelPrefix(a, 2, 4, (x, y) -> x / y);
        System.out.println(Arrays.toString(a));  //[1, 2, 6, 0, 120]  也可指定范圍
    }

本文大致包含了所有的方法,除了Java 11之后新增的,或者我看漏的,文中如有錯(cuò)誤,還請(qǐng)指出,大家一起進(jìn)步!

總結(jié)

到此這篇關(guān)于Java中Arrays數(shù)組工具類的基本使用的文章就介紹到這了,更多相關(guān)Java?Arrays數(shù)組工具類使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java?中?Class?Path?和?Package的使用詳解

    Java?中?Class?Path?和?Package的使用詳解

    這篇文章主要介紹了Java?中?Class?Path和Package的使用詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-08-08
  • 基于Spring整合mybatis的mapper生成過(guò)程

    基于Spring整合mybatis的mapper生成過(guò)程

    這篇文章主要介紹了Spring整合mybatis的mapper生成過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • java字符串的合并

    java字符串的合并

    合并兩個(gè)字符串,如:str1 ="001,002,003,004,006",str2 = "001,002,005" 合并后應(yīng)該是"001,002,003,004,005,006"。
    2008-10-10
  • Java中的三元運(yùn)算(三目運(yùn)算)以后用得到!

    Java中的三元運(yùn)算(三目運(yùn)算)以后用得到!

    Java提供了一個(gè)三元運(yùn)算符,可以同時(shí)操作3個(gè)表達(dá)式,下面這篇文章主要給大家介紹了關(guān)于Java中三元運(yùn)算(三目運(yùn)算)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • Java實(shí)現(xiàn)學(xué)生選課管理系統(tǒng)

    Java實(shí)現(xiàn)學(xué)生選課管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)學(xué)生選課管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • java使用Filter實(shí)現(xiàn)自動(dòng)登錄的方法

    java使用Filter實(shí)現(xiàn)自動(dòng)登錄的方法

    這篇文章主要為大家詳細(xì)介紹了java使用Filter實(shí)現(xiàn)自動(dòng)登錄的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 秒懂Java枚舉類型(enum)

    秒懂Java枚舉類型(enum)

    這篇文章主要介紹了秒懂Java枚舉類型(enum),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • springboot?通過(guò)博途獲取plc點(diǎn)位的數(shù)據(jù)代碼實(shí)現(xiàn)

    springboot?通過(guò)博途獲取plc點(diǎn)位的數(shù)據(jù)代碼實(shí)現(xiàn)

    這篇文章主要介紹了springboot?通過(guò)博途獲取plc點(diǎn)位的數(shù)據(jù)的代碼實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • springboot X-Accel-Redirect 大文件下載實(shí)現(xiàn)

    springboot X-Accel-Redirect 大文件下載實(shí)現(xiàn)

    本文主要介紹了springboot X-Accel-Redirect 大文件下載實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • SpringBoot整合SpringSession實(shí)現(xiàn)分布式登錄詳情

    SpringBoot整合SpringSession實(shí)現(xiàn)分布式登錄詳情

    這篇文章主要介紹了SpringBoot整合SpringSession實(shí)現(xiàn)分布式登錄詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-08-08

最新評(píng)論