org.apache.commons.lang3 jar的使用 ArrayUtils


ArrayUtils是lang3自帶的數組操作工具類,下面是本人基於commons-lang3-3.5.jarf進行的實踐,其中以字符串數組為例,

對於其它的數據類型,如type[]、char[]、double[]、float[]、int[]、long[]、short[]也同樣適用

maven中添加依賴

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.5</version>
</dependency>
import org.apache.commons.lang3.ArrayUtils;
 
/**
 * Created with IntelliJ IDEA.
 *
 * @Author: Zhong
 * @Date: 2018/9/10
 * @Time: 14:11
 * @Description:
 */
public class ArrayUtilsTest {
    public static void main(String[] args) {
        // 1.  靜態屬性新建空的數據類型數組
        boolean[] emptyBoolean = ArrayUtils.EMPTY_BOOLEAN_ARRAY;
        String[] emptyString = ArrayUtils.EMPTY_STRING_ARRAY;
 
        // 2. 靜態方法
        // 2.1 向數據類型數組中添加元素
        String[] stringArray2 = new String[]{"first", "second"};
        String[] addedArray = ArrayUtils.add(stringArray2, "third");
        // 輸出值為3
        System.out.println(addedArray.length);
 
        // 2.2 將多個相同數據類型的數據添加到一塊
        String[] stringArray3 = ArrayUtils.addAll(addedArray, stringArray2);
        // 輸出:5
        System.out.println(stringArray3.length);
 
        // 2.3 克隆一份數組
        String[] tempStringArray = ArrayUtils.clone(stringArray3);
        // 輸出:5
        System.out.println(tempStringArray.length);
 
        // 判斷兩個數組是否相同,如果內容相同、順序相同, 則返回為真
        System.out.println("isEquals:" + ArrayUtils.isEquals(tempStringArray, stringArray3)); // isEquals:true
 
        // 2.4 數組中是否包含某個數據值
        boolean isContains = ArrayUtils.contains(stringArray3, "first");
        // 輸出:true
        System.out.println(isContains);
 
        // 2.5 獲取數組長度
        int length = ArrayUtils.getLength(stringArray3);
 
        // 2.6 獲取數組哈希碼
        int hashCode = ArrayUtils.hashCode(tempStringArray);
 
        // 2.7 獲取指定元素在數組中的索引
        int index = ArrayUtils.indexOf(tempStringArray, "second");
        // 輸出:1
        System.out.println(index);
 
        // 2.8 從指定索引(1)開始查找元素(second)在數組(tempStringArray)中的索引
        int stringIndex = ArrayUtils.indexOf(tempStringArray, "second", 1);
        // 輸出:2.8:1
        System.out.println("2.8:" +stringIndex);
 
        // 2.9 判斷數組是否為空/是否不為空
        boolean isEmpty = ArrayUtils.isEmpty(tempStringArray);
        boolean isNotEmpty = ArrayUtils.isNotEmpty(tempStringArray);
 
        // 2.10 判斷兩個數組長度是否相同
        boolean isSameLength = ArrayUtils.isSameLength(tempStringArray, stringArray2);
 
        // 2.11 判斷兩個數組是否是相同類型
        boolean isSameType = ArrayUtils.isSameType(tempStringArray, stringArray2);
        // 輸出:true
        System.out.println(isSameType);
 
        // 2.12 判斷數組是否已按照自然排序
        boolean isSorted = ArrayUtils.isSorted(stringArray2);
        // 輸出: true
        System.out.println(isSorted);
        String[] tempStringArray2 = ArrayUtils.add(stringArray2, "alive");
        // 輸出:false
        System.out.println(ArrayUtils.isSorted(tempStringArray2));
 
        // 2.13 最后一個元素索引 tempStringArray:{"first", "second", "third", "first", "second"}
        int lastIndex = ArrayUtils.lastIndexOf(tempStringArray, "second");
        // 輸出:4
        System.out.println(lastIndex);
        // 從指定位置3 開始,往前查找(遇到第一個)元素的索引,也就是索引小於指定索引3的最后一個second元素的索引
        lastIndex = ArrayUtils.lastIndexOf(tempStringArray, "second", 3);
        // 輸出:1
        System.out.println(lastIndex);
 
        // 2.14 將null改為empty
        String[] arr = null;
        String[] isNullToEmpty = ArrayUtils.nullToEmpty(arr);
        // null無輸出, 輸出:empty
        if(null == isNullToEmpty) {
            System.out.println("null");
        }
        if(isNullToEmpty.length == 0) {
            System.out.println("empty");
        }
 
        // 2.15 移除數組指定索引的元素
        String[] result = ArrayUtils.remove(tempStringArray, 1);
        // 輸出:4
        System.out.println(result.length);
 
        // 2.16 數組元素位置反轉,此方法無返回值,執行之后,tempStringArray變為:{"second", "first", "third", "second", "first"}
        ArrayUtils.reverse(tempStringArray);
 
        // 2.17 數組元素位置循環移位, 2 代表每個元素都向前移動2個位置,移動后:{"second", "first", "second", "first", "third"}
        ArrayUtils.shift(tempStringArray, 2);
 
        // 2.18 獲取數組指定區間的子數組
        String[] subsArray = ArrayUtils.subarray(tempStringArray, 1, 3);
 
        // 2.19 交換數組中兩個指定索引位置的元素,無返回值,執行后,temStringArray:{"second", "third", "second", "first", "first"}
        ArrayUtils.swap(tempStringArray, 1,4);
 
        // 2.20 將基本數據類型的數組轉化為包裝類型的數組
        boolean[] booleans = new boolean[] {true, false};
        Boolean[] booleanArrays = ArrayUtils.toObject(booleans);
 
        // 2.21 將包裝類型的數據轉化為基本類型的數組
        boolean[] primitiveArray = ArrayUtils.toPrimitive(booleanArrays);
 
        // 2.22 將數組以 {,} 形式輸出
        System.out.print(ArrayUtils.toString(tempStringArray)); // {second,third,second,first,first}
        
        // 2.23 將二維數據轉為MAP
        Map map = ArrayUtils.toMap(new String[][]{{"first", "first value"},{"second", "second value"},{"third", "third value"}});
        Iterator iterator = map.entrySet().iterator();
        while(iterator.hasNext()) {
            Map.Entry entry = (Map.Entry) iterator.next();
            System.out.print(" key:" + entry.getKey() + " value:" + entry.getValue()); //  key:third value:third value key:first value:first value key:second value:second value
        }
 
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM