前言
Arrays類來自於 java.util.Arrays;
java JDK自帶的 java.util.Arrays對象,提供的功能接口非少,在開發過程中很不方便,所以我們一般都會使用一個Array的工具類,例如: Apache common lang,它提供了大量的實用方法,可以大大減少開發中代碼量;
但是,Apache common lang工具類實際上也是通過原生 java.util.Arrays類的封裝來拓展了一些功能,所以對於java.util.Arrays的一些常用的方法,我們還是要有一些了解
常用方法
fille:填充數組
String[] strList = new String[3]; Arrays.fill(strList, "char");
//strList值填充為{"char","char","char"}
String[] strList = new String[]{"default","default"};
Arrays.fill(strList, "char");//即便strList 初始化時存在值,也會被覆蓋,strList值為:{"char","char","char"}
asList:將數組轉化為List || Set
特別注意,將整形數組轉為集合,必須用原始類型。不能直接將int[]轉化為集合、因為asList()方法的參數必須是對象。應該先把int[]轉化為Integer[]。對於其他原始的類型的數組也是如此,必須先轉換成相應的包裝類類型數組。Java是面向對象的編程語言,也就說一切皆為對象.可是那些int double 等八種數據類型卻不是對象,這就與Java的一切皆是對象的思想相矛盾了,所以為了解決這個問題,Java就出現了包裝類,把那些基本數據類型進行包裝,讓它成為了一個類,等用到的時候直接調用就可以了..因為集合的類型必須為對象,所以添加元素類型必須為原始類。
String[] strList = new String[]{"default","default"}; //將數組轉化成list //轉化成ArrayList ArrayList<String> arrayList=new ArrayList<>(Arrays.asList(strList)); //轉化陳成LinkedList LinkedList<String> LinkedList=new LinkedList<>(Arrays.asList(strList)); //轉化成Set Set<String> set=new HashSet<>(Arrays.asList(strList));
Array.toString().contains("default"):判斷數組中,指定的元素是否存在(適用於字符串數組)
contains是字符串上的方法,先用toString將數組轉化成字符串,然后在通過字符串的contains方法,選取到指定的字符串
String[] strList = new String[]{"default","default2"}; //判斷元素是否存在於數組 boolean bl= Arrays.toString(strList).contains("default");
Array.binarySearch:判斷數組中指定的元素是否存在(適用於數值類型,並且要求數組內元素排序)return 元素存在的索引位置,如果不存在則為-1,如果元素存在,但是集合不是排序集合,那么返回-2
此方法是采用2分法進行查找的,所以必須要求元素安順序排列
int[] ints = new int[]{1, 7, 5, 4, 8, 2, 6, 3, 9}; int idx = Arrays.binarySearch(ints, 0);
Apache common lang
p("=============== ArrayUtils 工具類使用 ,這個類對null的輸入處理很好================"); String strs[] = { "str1", "str2", "str3" }; p(ArrayUtils.add(strs, 0, "測試字符串")); p("向數組中末尾添加元素"); p(ArrayUtils.add(strs, "str3")); p("向數組指定位置添加元素"); p(ArrayUtils.add(strs, 1, "str3")); p("向數組中添加所有元素"); p(ArrayUtils.addAll(strs, "str3", "str4")); p("拷貝數組"); p(ArrayUtils.clone(strs)); p("數組中是否包含指定的元素"); p(ArrayUtils.contains(strs, "str2")); p("獲取數組的長度"); p(ArrayUtils.getLength(strs)); p("查找第一次出現的位置"); p(ArrayUtils.indexOf(strs, "str2")); p("判斷數組是否是空的"); p(ArrayUtils.isEmpty(strs)); p("判斷數組是否非空"); p(ArrayUtils.isNotEmpty(strs)); p("判斷數組是否相等"); p(ArrayUtils.isEquals(strs, new String[] { "str2" })); p("判斷數組長度是否相等"); p(ArrayUtils.isSameLength(strs, strs)); p("判斷數組類型是否相同"); p(ArrayUtils.isSameType(strs, new String[] { "str" })); p("查找數組中最后出現元素的位置"); p(ArrayUtils.lastIndexOf(strs, "str2")); p("null轉換成空數組"); p(ArrayUtils.nullToEmpty(strs)); p("從數組中移除指定索引的元素"); p(ArrayUtils.remove(strs, 1)); p("從數組中移除所有指定的元素"); p(ArrayUtils.removeAll(strs, 1, 2)); p("移除數組中指定的元素"); p(ArrayUtils.removeElement(strs, "str1")); p("移除數組中指定的所有元素"); p(ArrayUtils.removeElements(strs, "str1", "str2")); p("顛倒數組"); ArrayUtils.reverse(strs); p(strs); p("子數組"); p(ArrayUtils.subarray(strs, 0, 2)); p("構建數組"); p(ArrayUtils.toArray("str1", "str2")); p("將二維數組轉換成Map"); String mapStr[][] = { { "key1", "value1" }, { "key2", "value2" } }; p(ArrayUtils.toMap(mapStr)); p("將基本類型數組轉換成包裝類型"); p(ArrayUtils.toObject(new int[] { 1, 2, 3, 4, 5 })); p("將包裝類型數組轉換成基本類型"); p(ArrayUtils.toPrimitive(new Integer[] { 1, 2, 3, 4, 5 })); p("將數組用字符串的形式輸出"); p(ArrayUtils.toString(strs));