Java程序员的日常—— Arrays工具类的使用
生活随笔
收集整理的這篇文章主要介紹了
Java程序员的日常—— Arrays工具类的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這個類在日常的開發中,還是非常常用的。今天就總結一下Arrays工具類的常用方法。最常用的就是asList,sort,toStream,equals,copyOf了。另外可以深入學習下Arrays的排序算法,這個還是非常有用的。
所有的方法都是在下面的類中進行測試的:
public class ArraysTest {String[] array = new String[]{"a","c","2","1","b"};Integer[] ints = new Integer[]{5,1,4,3,2};... }asList
這個方法可以把數組轉換成List,List提供了很多的操作方法,更便于使用。
@Testpublic void test1(){List<String> lists = Arrays.asList(array);}sort排序和parallelSort并行排序
sort比較常用了,根據元素按照自然排序規則排序,也可以設置排序元素的起始位置。
@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則采用并行的排序算法排序.但是我自己測試,可能數據量太小,速度上并沒有明顯的變化。
binarySearch
查找目標元素所在的位置,注意需要先進行排序。
@Testpublic void binarySearch(){//binarySearch需要保證是排好序的System.out.println(Arrays.binarySearch(array,"c"));//-6Arrays.sort(array);System.out.println(Arrays.binarySearch(array,"c"));//4}copyOf
拷貝數組,第一種用法,如果目標長度不夠,會使用0進行補位。第二種用法,支持拷貝目標起始位置到結束為止的數組。
@Testpublic void copyOf(){//如果位數不夠,需要補位Integer[] result = Arrays.copyOf(ints,10);for(int i : result){System.out.println(i);}System.out.println("----------------------------------------->");//如果位數夠,就取最小的數組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深度打印
這幾個方法基本都是采用遞歸的寫法使用。
@Testpublic void deepTest(){String[] array2 = new String[]{"a","c","2","1","b"};System.out.println(Arrays.deepEquals(array,array2));//深度比較兩個數組是否相同System.out.println(Arrays.deepHashCode(array));System.out.println(Arrays.deepHashCode(array2));//如果兩個數組deepEquals,那么他們的hashcode一定相同//格式化輸出數組System.out.println(Arrays.deepToString(array));}equals比較
對比兩個數組是否相等
@Testpublic void equals(){String[] array2 = new String[]{"a","c","2","1","b"};//1 對比引用是否相同//2 對比是否存在null//3 對比長度是否相同//4 挨個元素對比System.out.println(Arrays.equals(array,array2));}fill
基于目標元素填充數組
@Testpublic void fill(){Arrays.fill(array,"test");System.out.println(Arrays.deepToString(array));//[test, test, test, test, test]}toString
打印數組元素
@Testpublic void string(){System.out.println(Arrays.toString(array));//[a, c, 2, 1, b]}toStream
把數組轉換成stream,然后可以使用java8的stream特性了。
@Testpublic void toStream(){Arrays.stream(array).forEach(s-> System.out.println(s));}parallelPrefix
這個有點像spark的reduceByKey,即根據傳入的方法一次計算:
@Testpublic void parallelPrefix(){Arrays.parallelPrefix(ints,(x,y)->(x+y));System.out.println(Arrays.deepToString(ints));//[5, 6, 10, 13, 15]}parallelSetAll
這個方法相當于stream.map會挨個元素遍歷執行方法
@Testpublic void parallelSetAll(){Arrays.parallelSetAll(ints,x->x*x);System.out.println(Arrays.toString(ints));//[0, 1, 4, 9, 16]}setAll
這個方法與上面類似,只不過不是并行的
@Testpublic void setAll(){Arrays.setAll(ints,x->x*2);System.out.println(Arrays.toString(ints));}轉載于:https://www.cnblogs.com/xing901022/p/6224290.html
總結
以上是生活随笔為你收集整理的Java程序员的日常—— Arrays工具类的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux驱动之触摸屏驱动程序
- 下一篇: Linux下不同服务器间数据传输