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

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

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

方法一覽表

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

快速定位詳細操作

接下來我用代碼一一舉例演示。

asList()

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

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

返回值:一個列表

代碼示例

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

    }

注意

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

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);   報錯,類型必須一直(泛型)
        System.out.println(ss);  //[hello, world]
        
//        ss.add("java");  //UnsupportedOperationException  會報錯
//        ss.remove(1);   //UnsupportedOperationException  會報錯
        
        System.out.println(ss.get(0));  //hello
        ss.set(0, "java");
        System.out.println(ss);  //[java, world]

    }

sort() 和 parallelSort()

功能:都是將數(shù)組排序(默認升序,支持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)

返回值:無

代碼示例

    @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);  默認全排,字母會按照字母表順序
        //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表達式(多參數(shù)情況可指定開始結(jié)束位置)
//        Arrays.sort(str, (a, b) -> b.compareTo(a));  //降序
//        System.out.println(Arrays.toString(str));  //[javascript, java, hello, add, abc]


        //parallelSort()方法目前我實驗感覺與sort()相差無幾,基本相似
        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表達式,泛型)
參數(shù):binarySearch?(Object[] a[, int fromIndex, int toIndex], Object key)

返回值:有則返回對應(yīng)下標(biāo),無則返回負值

代碼示例

    @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
        //也可指定范圍查找,其查找機制是折半查找,每次縮小一半范圍
    }

compare() 和 compareUnsigned()

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

參數(shù)

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

返回值

  • 如果第一個和第二個數(shù)組相等并且包含相同順序的相同元素,則值為0 ;
  • 如果第一個數(shù)組按字典順序小于第二個數(shù)組,則值小于0 ;
  • 如果第一個數(shù)組按字典順序大于第二個數(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));//報錯
        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);  //拷貝長度為5,第二個參數(shù)為新數(shù)組的長度
        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;   //改變原數(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;  //改變原數(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ù)制后的不會隨著改變

    }

注意

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

equals()

功能:比較兩個數(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()

功能:比較兩個數(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));  //報錯
        
    }

比較equals()deepEquals()方法

相同點

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

不同點

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

?fill()

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

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

返回值:無

代碼示例

    @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]
        
        //默認全填充,也可以指定范圍,會改變原數(shù)組
    }

mismatch()

功能:查找并返回兩個數(shù)組之間第一個不匹配的索引,如果未找到則返回-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)

返回值:兩個數(shù)組之間第一個不匹配的索引,未找到不匹配則返回-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ù)組的每個元素。
參數(shù)

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

返回值:無

代碼示例

 @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ù)組的所有元素以計算每個元素。
參數(shù)

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

返回值:無

代碼示例

 @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之后新增的,或者我看漏的,文中如有錯誤,還請指出,大家一起進步!

總結(jié)

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

相關(guān)文章

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

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

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

    基于Spring整合mybatis的mapper生成過程

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

    java字符串的合并

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

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

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

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

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

    java使用Filter實現(xiàn)自動登錄的方法

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

    秒懂Java枚舉類型(enum)

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

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

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

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

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

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

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

最新評論