1. 簡介html
Arrays類包含用於操做數組的各類方法(例如排序和搜索)。此類還包含一個靜態工廠,容許將數組視爲列表。java
若是指定的數組引用爲null,則此類中的方法都拋出NullPointerException,除非另有說明。數組
2. 方法說明spa
List<T> asList(T... a):返回由指定數組構成的大小固定的列表,該列表不能使用add和remove方法改變長度code
int binarySearch(Object[] a, Object key):使用二分查找元素的索引htm
T[] copyOfRange(T[] original, int from, int to):複製數組,而且指定開始/結束索引blog
T[] copyOf(T[] original, int newLength):複製數組,而且指定複製長度排序
void fill(Object[] a, Object val):使用指定元素填充數組索引
void fill(Object[] a, int fromIndex, int toIndex, Object val):使用指定數組填充數組,而且指定填充的開始/結束索引接口
void sort(Object[] a):對數組排序,須要實現數組元素的Comparable接口
void sort(Object[] a, int fromIndex, int toIndex):對指定開始/結束索引的數組排序,須要實現數組元素的Comparable接口
void sort(T[] a, Comparator<? super T> c):對數組排序,須要實現數組元素的Comparator接口
void sort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c):對指定開始/結束索引的數組排序,須要實現數組元素的Comparator接口
String toString(Object[] a):數組轉字符串
static Stream<T> stream(T[] array):數組轉爲流
static IntStream stream(int[] array):int數組轉爲流,還有DoubleStream和LongStream
3. 簡單示例
1 /* 2 *二分查找僅適用於有序的數組 3 * */ 4 5 import java.util.*; 6 import java.util.stream.Stream; 7 8 public class ArraysFunc { 9 public static void main(String[] args){ 10 11 String[] arr1 = new String[]{"a","b","b","d","c"}; 12 13 //數組轉成長度固定的列表,不能使用add和remove方法改變list長度 14 List<String> list1 = Arrays.asList(arr1); 15 System.out.println(list1); // [a, b, b, d, c] 16 17 //使用二分查找元素索引 18 int index = Arrays.binarySearch(arr1,"b"); 19 System.out.println(index); // 2 20 21 // 複製指定開始/結束位置的數組(不包含結尾) 22 String[] arr2 = Arrays.copyOfRange(arr1, 1,3); 23 System.out.println(Arrays.asList(arr2)); // [b, b] 24 25 //複製指定長度的數組(索引從0開始) 26 String[] arr3 = Arrays.copyOf(arr1,3); 27 System.out.println(Arrays.asList(arr3)); // [a, b, b] 28 29 // 判斷數組是否等價 30 boolean flag1 = Arrays.equals(arr1,arr2); 31 System.out.println(flag1); // false 32 33 // 對數組填充指定元素,可指定範圍(不包含結尾) 34 Arrays.fill(arr3,"e"); 35 System.out.println(Arrays.asList(arr3)); // [e, e, e] 36 Arrays.fill(arr3,0,2,"f"); 37 System.out.println(Arrays.asList(arr3)); // [f, f, e] 38 39 // 對數組排序 40 Arrays.sort(arr1); 41 System.out.println(Arrays.asList(arr1)); // [a, b, b, c, d] 42 43 // 將數組變成字符串,保留完整符號 44 String str1 = Arrays.toString(arr1); 45 System.out.println(str1); // [a, b, b, c, d] 46 47 // stream,能夠用於數組類型轉換 48 String str = "1 3 2 5 6 4"; 49 String[] strArray = str.split(" "); 50 Stream<String> stringStream = Arrays.stream(strArray); 51 int[] intArray = Arrays.stream(strArray).mapToInt(Integer::parseInt).toArray(); 52 int[] intArr = Stream.of(strArray).mapToInt(Integer::parseInt).toArray(); 53 } 54 }
4. 說明
4.1 使用Arrays.binarySearch()方法時,須要注意數組要是有序的,不然將會沒法獲得本身想要的結果。
這是因爲該方法使用二分查找法實現。
4.2 使用Arrays.sort()方法時,對於自定義元素須要實現Comparable或者Comparator接口。
關於兩接口的實現參考以下:http://www.javashuo.com/article/p-kkajeich-dx.html
!!!