日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java程序员的日常—— Arrays工具类的使用

發(fā)布時(shí)間:2025/7/14 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java程序员的日常—— Arrays工具类的使用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這個(gè)類(lèi)在日常的開(kāi)發(fā)中,還是非常常用的。今天就總結(jié)一下Arrays工具類(lèi)的常用方法。最常用的就是asList,sort,toStream,equals,copyOf了。另外可以深入學(xué)習(xí)下Arrays的排序算法,這個(gè)還是非常有用的。

所有的方法都是在下面的類(lèi)中進(jìn)行測(cè)試的:

public class ArraysTest {String[] array = new String[]{"a","c","2","1","b"};Integer[] ints = new Integer[]{5,1,4,3,2};... }

asList

這個(gè)方法可以把數(shù)組轉(zhuǎn)換成List,List提供了很多的操作方法,更便于使用。

@Testpublic void test1(){List<String> lists = Arrays.asList(array);}

sort排序和parallelSort并行排序

sort比較常用了,根據(jù)元素按照自然排序規(guī)則排序,也可以設(shè)置排序元素的起始位置。

@Testpublic void sort(){/* Arrays.sort(array);for(String str : array){System.out.println(str);}*/Arrays.sort(array,2,5);System.out.println(Arrays.deepToString(array));//[a, c, 1, 2, b]}

parallelSort則采用并行的排序算法排序.但是我自己測(cè)試,可能數(shù)據(jù)量太小,速度上并沒(méi)有明顯的變化。

binarySearch

查找目標(biāo)元素所在的位置,注意需要先進(jìn)行排序。

@Testpublic void binarySearch(){//binarySearch需要保證是排好序的System.out.println(Arrays.binarySearch(array,"c"));//-6Arrays.sort(array);System.out.println(Arrays.binarySearch(array,"c"));//4}

copyOf

拷貝數(shù)組,第一種用法,如果目標(biāo)長(zhǎng)度不夠,會(huì)使用0進(jìn)行補(bǔ)位。第二種用法,支持拷貝目標(biāo)起始位置到結(jié)束為止的數(shù)組。

@Testpublic void copyOf(){//如果位數(shù)不夠,需要補(bǔ)位Integer[] result = Arrays.copyOf(ints,10);for(int i : result){System.out.println(i);}System.out.println("----------------------------------------->");//如果位數(shù)夠,就取最小的數(shù)組result = Arrays.copyOf(ints,3);for(int i : result){System.out.println(i);}System.out.println("----------------------------------------->");//result = Arrays.copyOfRange(ints,2,4);for(int i : result){System.out.println(i);}}

deepEquals深度比較、deepHashCode生成hashcode、deepToString深度打印

這幾個(gè)方法基本都是采用遞歸的寫(xiě)法使用。

@Testpublic void deepTest(){String[] array2 = new String[]{"a","c","2","1","b"};System.out.println(Arrays.deepEquals(array,array2));//深度比較兩個(gè)數(shù)組是否相同System.out.println(Arrays.deepHashCode(array));System.out.println(Arrays.deepHashCode(array2));//如果兩個(gè)數(shù)組deepEquals,那么他們的hashcode一定相同//格式化輸出數(shù)組System.out.println(Arrays.deepToString(array));}

equals比較

對(duì)比兩個(gè)數(shù)組是否相等

@Testpublic void equals(){String[] array2 = new String[]{"a","c","2","1","b"};//1 對(duì)比引用是否相同//2 對(duì)比是否存在null//3 對(duì)比長(zhǎng)度是否相同//4 挨個(gè)元素對(duì)比System.out.println(Arrays.equals(array,array2));}

fill

基于目標(biāo)元素填充數(shù)組

@Testpublic void fill(){Arrays.fill(array,"test");System.out.println(Arrays.deepToString(array));//[test, test, test, test, test]}

toString

打印數(shù)組元素

@Testpublic void string(){System.out.println(Arrays.toString(array));//[a, c, 2, 1, b]}

toStream

把數(shù)組轉(zhuǎn)換成stream,然后可以使用java8的stream特性了。

@Testpublic void toStream(){Arrays.stream(array).forEach(s-> System.out.println(s));}

parallelPrefix

這個(gè)有點(diǎn)像spark的reduceByKey,即根據(jù)傳入的方法一次計(jì)算:

@Testpublic void parallelPrefix(){Arrays.parallelPrefix(ints,(x,y)->(x+y));System.out.println(Arrays.deepToString(ints));//[5, 6, 10, 13, 15]}

parallelSetAll

這個(gè)方法相當(dāng)于stream.map會(huì)挨個(gè)元素遍歷執(zhí)行方法

@Testpublic void parallelSetAll(){Arrays.parallelSetAll(ints,x->x*x);System.out.println(Arrays.toString(ints));//[0, 1, 4, 9, 16]}

setAll

這個(gè)方法與上面類(lèi)似,只不過(guò)不是并行的

@Testpublic void setAll(){Arrays.setAll(ints,x->x*2);System.out.println(Arrays.toString(ints));}

轉(zhuǎn)載于:https://www.cnblogs.com/xing901022/p/6224290.html

總結(jié)

以上是生活随笔為你收集整理的Java程序员的日常—— Arrays工具类的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。