java Arrays經常使用方法

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

!!!

相關文章
相關標籤/搜索