该方法的签名如下:

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

Java系列:Collection.toArray用法研究的更多相关文章

  1. 模拟java.util.Collection一些简单的用法

    /* 需求:模拟java.util.Collection一些简单的用法! 注意:java虚拟机中并没有泛型类型的对象.泛型是通过编译器执行一个被称为类型擦除的前段转换来实现的. 1)用泛型的原生类型替 ...

  2. Java集合工具类使用的一些坑,Arrays.asList()、Collection.toArray()、foreach

    Arrays.asList() 使用指南 最近使用Arrays.asList()遇到了一些坑,然后在网上看到这篇文章:Java Array to List Examples 感觉挺不错的,但是还不是特 ...

  3. Java系列,《Java核心技术 卷1》,chapter 13,集合

    13.1.2 Java类库中的集合接口和迭代器接口     删除元素,对于next和remove的调用是互相依赖的,如果调用remove之前没有调用next,则会跑出IllegalStateExcep ...

  4. Java系列笔记(3) - Java 内存区域和GC机制

    目录 Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器 Java垃圾回收概况 Java GC(Garbage Collection, ...

  5. Java系列笔记(6) - 并发(上)

    目录 1,基本概念 2,volatile 3,atom 4,ThreadLocal 5,CountDownLatch和CyclicBarrier 6,信号量 7,Condition 8,Exchang ...

  6. 【转】O'Reilly Java系列书籍建议阅读顺序(转自蔡学庸)

    Learning Java the O'Reilly's Way (Part I) Java 技术可以说是越来越重要了,不但可以用在计算机上,甚至连电视等家电用品,行动电话.个人数字助理(PDA)等电 ...

  7. 【转载】Java系列笔记(3) - Java 内存区域和GC机制

    Java系列笔记(3) - Java 内存区域和GC机制 转载:原文地址http://www.cnblogs.com/zhguang/p/3257367.html 目录 Java垃圾回收概况 Java ...

  8. 谈谈Java的Collection接口

    目录 谈谈Collection 前言 Collection 方法 1.boolean add(E) 2.void clear() 3.boolean contains(Object o) 4.bool ...

  9. Java系列笔记(4) - JVM监控与调优

    目录 参数设置收集器搭配启动内存分配监控工具和方法调优方法调优实例     光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之.通过学习,我觉得JVM ...

随机推荐

  1. Reveal常用技巧(翻译来自Reveal官网blog)

    翻译来自官网:http://revealapp.com/blog/reveal-common-tips-cn.html 以下基于Reveal 1.6. 用于快速上手的内置应用 刚刚下载Reveal,啥 ...

  2. IT技术很好的视频网址

    1.华为工程师 带你实战C++ 2.vimoe,国外的,需要FQ哦.https://vimeo.com/85831438

  3. Android中ListView 控件与 Adapter 适配器如何使用?

    一个android应用的成功与否,其界面设计至关重要.为了更好的进行android ui设计,我们常常需要借助一些控件和适配器.今天小编在android培训网站上搜罗了一些有关ListView 控件与 ...

  4. img标签使用默认图片的一种方式

    基于html5提供的onerror这个时间属性.

  5. 测试管理_出色测试管理者的思考[持续更新ing]

    如何合理安排并按质按量按时完成每一个测试任务,做好项目管理? 如何把控到每一个测试任务的质量? 如何快速构建和构建好测试环境? 如何获取或快速制作测试数据? 如何确保每一个测试人员的工作都饱满? 如何 ...

  6. Spring web.xml配置文件解析

    概要解析

  7. DataTable转List<Model>通用类

    /// <summary> /// DataTable转List<Model>通用类[实体转换辅助类] /// </summary> public class Mo ...

  8. c++字符串互相转换

    1.string vs char* //string to char* string str; const char* cch = str.c_str(); ]; strcpy(ch,cch); // ...

  9. Windows路由表详解

    对于路由器的路由表,大部分网管朋友都很熟悉,但是对于windows的路由表,可能了解的人就相对少一些.今天我们就一起来看看windows路由表.   一. windows路由表条目解释 1. 使用ip ...

  10. 微信公众号开发之LBS

    百度地图Web服务api:http://lbsyun.baidu.com/index.php?title=webapi 1.测距 Route Matrix API v2.0:http://lbsyun ...