• 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被填充的时候,他和返回值其实是同一个数组;

  • 相关阅读:
    三周#学习进度总结
    四则运算(修改版)
    是否需要有代码规范?
    结对项目:代码复审+PSP
    二周#学习进度总结
    GitHub注册流程(中英对比)
    四则运算:我的设计和设想(未完成版)
    Spring4总结
    Hibernate5总结
    Struts2总结
  • 原文地址:https://www.cnblogs.com/strinkbug/p/5050217.html
Copyright © 2020-2023  润新知