Java8 增強工具類 Arrays 筆記

來源:互聯網
上載者:User

標籤:ring   list   style   返回   多線程   ext   fill   func   class   

隨手筆記做
Arrays工具類分為兩類單線程和多線程
  以下所有帶有下標範圍限定的,都為含頭不含尾

單線程:
1.binarySearch:尋找數組中為 key 的 下標 :binarySearch 二分法尋找,數組必須有序,且存在此數組中,否則返回負數下標
Arrays.binarySearch(Object[] a,Object key):int
Arrays.binarySearch(Object[] a, int fromIndex, int toIndex,Object key):int
跳至例子

2.copyOf:複製出新的數組,複製長度由 newLength 決定,長度可大於被複製數組的長度

 copyOfRange:複製指定下標範圍內的值

copyOf(T[] original, int newLength):T[]copyOfRange(T[] original, int from, int to):T[]
跳至例子

3.sort:預設進行升序排序,可自訂排序

sort(Object[] a):voidsort(Object[] a, int fromIndex, int toIndex):voidsort(T[] a, Comparator<? super T> c):voidsort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c):void跳至例子

4.toString:數組toString

   deepToString:二維數組toString

toString(Object[] a):StringdeepToString(Object[] a):String跳至例子

5.equals:比較一維數組內容是否相等

   deepEquals:比較二維數組內容是否相等

equals(Object[] a, Object[] a2)deepEquals(Object[] a1, Object[] a2)跳至例子

6.fill:將一個數組全部置為 val ,或在下標範圍內將數組置為 val

fill(Object[] a, Object val):voidfill(Object[] a, int fromIndex, int toIndex, Object val):void跳至例子

7.setAll:一個數組全部做運算式操作

setAll(T[] array, IntFunction<? extends T> generator):void跳至例子

8.stream:將數組轉為流式,對array進行串流,可用一切串流的方法

stream(T[] array):Stream<T>跳至例子

多線程:

9.parallelPrefix:二元迭代,對原數組內容進行二元操作

parallelPrefix(T[] array, BinaryOperator<T> op):voidparallelPrefix(T[] array, int fromIndex, int toIndex,BinaryOperator<T> op):void跳至例子

10.parallelSetAll:一個數組全部做運算式操作

parallelSetAll(T[] array, IntFunction<? extends T> generator):void跳至例子

11.parallelSort:對數組進行升序排序或自訂排序

parallelSort(T[] a):voidparallelSort(T[] a, int fromIndex, int toIndex,Comparator<? super T> cmp):void跳至例子

12.spliterator:返回一個Spliterator,進行Spliterator相關操作

spliterator(T[] array):Spliterator<T>跳至例子


大雜燴:
public static void main(String[] args) {        Integer[] arrayTest={6,1,9,2,5,7,6,10,6,12};        //直接建立一個List        List<Integer> intList = Arrays.asList(5, 7, 9);        //以下是單線程演算法,處理數組
     //1.
//尋找數組中為 key 的 下標 :binarySearch 二分法尋找,數組必須有序,且存在此數組中,否則返回負數下標 Integer arr[]={1,2,3,4,5,6}; int binarySearch = Arrays.binarySearch(arr, 3); System.out.println(binarySearch); //在指定範圍內尋找 key 的 下標 int binarySearch0 = Arrays.binarySearch(arr, 0,3,3); System.out.println(binarySearch0);
     //2.
//複製出新的數組,複製長度由 newLength 決定,長度可大於被複製數組的長度 Integer[] copyArray1 = Arrays.copyOf(arrayTest, 5); arrayPrint(copyArray1); //複製指定下標範圍內的值,含頭不含尾 Integer[] copyArray2 = Arrays.copyOfRange(arrayTest, 2, 7); arrayPrint(copyArray2);
     //3.
//在指定下標內,對數組進位預設升序排序,這將改變原數組,下標含頭不含尾 Integer[] sortArray1 = Arrays.copyOf(arrayTest, arrayTest.length); Arrays.sort(sortArray1,0,5); arrayPrint(sortArray1); //數組內全部排序 Arrays.sort(sortArray1); arrayPrint(sortArray1); Integer[] sortArray2 = Arrays.copyOf(arrayTest, arrayTest.length); //使用比較子降序排序,在指定下標範圍內 Arrays.sort(sortArray2,0,5,(x,y)->y.compareTo(x)); arrayPrint(sortArray2); //使用比較子全部降序排序 Arrays.sort(sortArray2,(x,y)->y.compareTo(x)); arrayPrint(sortArray2);
     //4.
//數組toString System.out.println(Arrays.toString(arrayTest)); Integer[][] stuGrades={{1,3,5,7,9},{2,4,6,8},{1,5,10}}; //二維數組toString System.out.println(Arrays.deepToString(stuGrades));
//5. Integer[] equals1
= Arrays.copyOf(arrayTest, arrayTest.length); //比較一維數組內容是否相等 System.out.println(Arrays.equals(equals1,arrayTest)); Integer[][] equals2 = Arrays.copyOf(stuGrades, stuGrades.length); //比較二維數組內容是否相等 System.out.println(Arrays.deepEquals(stuGrades,equals2));
     //6. Integer[] fillArr
= new Integer[5]; //將一個數組置為 val(5) Arrays.fill(fillArr,5); arrayPrint(fillArr); //將一個數組指定範圍內建為 val(10) 含頭不含尾 Arrays.fill(fillArr,2,3,10); arrayPrint(fillArr);
     //7. Integer[] setAllArr
= Arrays.copyOf(arrayTest, arrayTest.length); //一個數組全部做運算式操作 Arrays.setAll(setAllArr,a->a*3); System.out.println(setAllArr);
     //8.
//Java8新特性,對array進行串流,可用一切串流的方法(將專門一篇來講Lambda與Stream) Arrays.stream(arrayTest) .map(a->a*2) .filter(a->a>10) .sorted() .distinct() .limit(6) .forEach(a-> System.out.print(a+" ")); System.out.println();     //以下是多線程演算法,處理數組(大多以parallel做為開頭的方法,可以充分利用現代CPU多核,處理大規模龐大的數組很有效)
      
     //9. Integer[] arrayPP1 = Arrays.copyOf(arrayTest, arrayTest.length); arrayPrint(arrayPP1); //二元迭代,對原數組內容進行二元操作 Arrays.parallelPrefix(arrayPP1,(x,y)->x*y); arrayPrint(arrayPP1); Integer[] arrayPP2 = Arrays.copyOf(arrayTest, arrayTest.length); //在指定下標範圍內,對原數組內容進行二元操作,下標含頭不含尾 Arrays.parallelPrefix(arrayPP2,0,5,(x,y)->x*y); arrayPrint(arrayPP2);
     //10. Integer[] arrayPSA
= Arrays.copyOf(arrayTest, arrayTest.length); //對原有數組對每個元素重新賦值,下面例子是 下標*5 然後賦到數組對應元素 Arrays.parallelSetAll(arrayPSA,a->a*5); arrayPrint(arrayPSA);     //11. Integer[] arrayPS1 = Arrays.copyOf(arrayTest, arrayTest.length); //對數組進行升序排序 Arrays.parallelSort(arrayPS1); arrayPrint(arrayPS1); //對指定下標範圍內的元素進行指定排序方法的排序,含頭不含尾 Arrays.parallelSort(arrayPS1,0,5,(x,y)->y.compareTo(x)); arrayPrint(arrayPS1);     //12. //返回一個Spliterator進行其它操作 Spliterator<Integer> spliterator = Arrays.spliterator(arrayPS1); //將原有Spliterator切出一部分為新的Spliterator,不可切時返回null Spliterator<Integer> integerSpliterator = spliterator.trySplit(); // estimateSize 還有幾個元素要處理 while(spliterator.estimateSize()>0){ //對每個元素進行處理 spliterator.tryAdvance(x-> System.out.print(x*2+" ")); } System.out.println(); //對Spliterator遍曆操作 integerSpliterator.forEachRemaining(a-> System.out.print(a+" ")); System.out.println(); //還有幾個要遍曆 System.out.println(integerSpliterator.getExactSizeIfKnown()); //表示該Spliterator有那些特性,用於最佳化 System.out.println(spliterator.characteristics()); } //懶人癌晚期 public static void arrayPrint(Object[] oArray){ System.out.println(Arrays.toString(oArray)); }

 

 

 
參考:http://www.cnblogs.com/ECJTUACM-873284962/p/7363224.html
參考:http://blog.csdn.net/lirx_tech/article/details/51437129

Java8 增強工具類 Arrays 筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.