Java容器工具類Arrays

奇舞移動發表於2019-04-15

原文地址:奇舞移動技術

前面把List, Set, Map的結構梳理了一下,在java的容器體系下,還有兩個非常重要的工具類CollectionsArrays,本文主要梳理下Arrays類提供的方法。

排序

Arrays提供兩種排序:sortparallelSort。首先看下sort相關的函式:

Java容器工具類Arrays
上圖展示了Arrays提供的各種sort函式以及它的過載形式。sort可以排序的陣列型別包括int, long, short, char, byte, float, double一共7種基本資料型別,在8基本型別中,除了boolean不能排序,都包含了。sort在對7中基本型別進行排序中,還可能會有int型別的第二個和第三個引數,分別表示排序開始的下標(包含)和結束的下標(不包含)。sort也可以對Object型別的資料進行排序,也可以對任意其他型別的陣列進行排序,並且可以自定義排序時的Comparator

Java容器工具類Arrays
當陣列元素的數量大於MIN_ARRAY_SORT_GRAN時,parallelSort會把陣列拆分為多個陣列,然後對多個陣列進行排序,最後將多個陣列進行歸併,最終得到排序結果。和sort方法一樣,parallelSortboolean以外的所有基本資料型別,並且支援任意其他型別,也支援自定義Comparator

二元操作

Java容器工具類Arrays
什麼是二元操作,可以看下下面的demo:

int [] arr = new int [] {1,2,3,4,5,6};
Arrays.parallelPrefix(arr, new IntBinaryOperator() {
	
	@Override
	public int applyAsInt(int left, int right) {
		// TODO Auto-generated method stub
		System.out.println(left + "-" + right);
		return left + right;
	}
});
System.out.println(Arrays.toString(arr));

1-2
3-3
6-4
10-5
15-6
[1, 3, 6, 10, 15, 21]
複製程式碼

可以看到parallelPrefix提供了IntBinarryOperator介面介面的applyAsInt提供了left, right引數,根據leftright引數對陣列進行修改,修改完成後將結果寫入原陣列。二元操作可以對long, int, double型別的陣列進行操作,也可以對任意其他型別的陣列進行操作,而且可以提供陣列操作的下標範圍。

二分查詢

Java容器工具類Arrays
Arrays可以對除boolean的基本型別資料進行二分查詢,可以對任意型別的陣列進行二分查詢,且可以指定二分查詢的下標範圍。對於非基本型別的陣列,可以自定義Comparator

資料填充

Java容器工具類Arrays
可以使用fill介面將陣列指定的下標位置的元素設定為指定的值。

拷貝

Java容器工具類Arrays
copyOf將源陣列從下標0開始,拷貝指定數量的元素並返回新的陣列;copyRangeOf將元素從指定下標範圍的元素中拷貝指定數量個元素並返回信的陣列。

分割迭代

Java容器工具類Arrays
Spliterator就是為了並行遍歷元素而設計的一個迭代器,可以閱讀之前的文章
Java迭代器spliterator
Java迭代器spliterator(二)

Stream

Java容器工具類Arrays
對陣列進行流式處理,可用一切流式處理的方法,後面會寫一篇文章分析stream操作

總結

Arrays主要提供了排序,二元操作,二分查詢,資料填充,拷貝,分割迭代,流式處理操作。 文章只是介紹了功能,並沒有詳細說明,後續會寫兩篇文章,分別分析分割迭代和流式處理。

關注微信公眾號,最新技術乾貨實時推送

image

相關文章