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