Java容器工具類Arrays

原文地址:奇舞移動技術java

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

排序

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

上圖展現了 Arrays提供的各類 sort函數以及它的重載形式。 sort能夠排序的數組類型包括 int, long, short, char, byte, float, double一共7種基本數據類型,在8基本類型中,除了 boolean不能排序,都包含了。 sort在對7中基本類型進行排序中,還可能會有 int類型的第二個和第三個參數,分別表示排序開始的下標(包含)和結束的下標(不包含)。 sort也能夠對 Object類型的數據進行排序,也能夠對任意其餘類型的數組進行排序,而且能夠自定義排序時的 Comparator

當數組元素的數量大於 MIN_ARRAY_SORT_GRAN時, parallelSort會把數組拆分爲多個數組,而後對多個數組進行排序,最後將多個數組進行歸併,最終獲得排序結果。和 sort方法同樣, parallelSortboolean之外的全部基本數據類型,而且支持任意其餘類型,也支持自定義 Comparator

二元操做

什麼是二元操做,能夠看下下面的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類型的數組進行操做,也能夠對任意其餘類型的數組進行操做,並且能夠提供數組操做的下標範圍。app

二分查找

Arrays能夠對除 boolean的基本類型數據進行二分查找,能夠對任意類型的數組進行二分查找,且能夠指定二分查找的下標範圍。對於非基本類型的數組,能夠自定義 Comparator

數據填充

能夠使用 fill接口將數組指定的下標位置的元素設置爲指定的值。

拷貝

copyOf將源數組從下標0開始,拷貝指定數量的元素並返回新的數組; copyRangeOf將元素從指定下標範圍的元素中拷貝指定數量個元素並返回信的數組。

分割迭代

Spliterator就是爲了並行遍歷元素而設計的一個迭代器,能夠閱讀以前的文章
Java迭代器spliterator
Java迭代器spliterator(二)

Stream

對數組進行流式處理,可用一切流式處理的方法,後面會寫一篇文章分析 stream操做

總結

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

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

image
相關文章
相關標籤/搜索