Java系列:Collection.toArray用法研究


該方法的簽名如下:

<T> T[] Collection.toArray(T[] arrayToFill);

這里想驗證兩個問題:

1)arrayToFill什么時候會被填充;

2)arrayToFill和返回值是否是同一個值?

測試代碼如下。

static void testToArray(){        
        LinkedList<String> strList = new LinkedList<String>();
        strList.add("zhang.san");
        strList.add("li.si");
        strList.add("wang.wu");
        print("filled array is not large enough.");
        testToArrayHelper(strList, new String[2]);
        
        print("filled array is large enough.");
        testToArrayHelper(strList, new String[3]);
    }
static void testToArrayHelper(LinkedList<String> strList, String[] filledArray){        
        String[] returnedArray = strList.toArray(filledArray);
        printArray("filled array:", filledArray);
        print("");
        printArray("returned array:", returnedArray);
        print("");
        if(filledArray == returnedArray)
            print("filled array is equal returned array.");
        else
            print("filled array is not equal returned array.");
    }
static <T> void printArray(String title, T[] array){
        print(title);
        for(T item: array){
            if(item != null)
                print("item:" + item.toString());
            else
                print("item is null");
        }
    }
static void print(String info){
        System.out.println(info);
    }

輸出日志如下:

filled array is not large enough.
filled array:
item is null
item is null
returned array:
item:zhang.san
item:li.si
item:wang.wu
filled array is not equal returned array.
filled array is large enough.
filled array:
item:zhang.san
item:li.si
item:wang.wu
returned array:
item:zhang.san
item:li.si
item:wang.wu
filled array is equal returned array.

結論,

1)如果arrayToFill的長度如果小於Collection的長度,則不會填充;

2)當arrayToFill被填充的時候,他和返回值其實是同一個數組;


免責聲明!

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



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