[转载] Java ArrayList toArray(T[] a) 解惑

参考链接: Java中的Array vs ArrayList

先看一个小的代码片段 

        ArrayList<Integer> arrayList = new ArrayList<>();

        Collections.addAll(arrayList, 11, 21, 31, 41, 51);

 

        Integer[] a = new Integer[0];

        Integer[] b = new Integer[arrayList.size()];

        Integer[] toArray = arrayList.toArray(a);

 

        System.err.println(Arrays.toString(toArray));

        Integer[] toArray1 = arrayList.toArray(b);

 

        System.err.println("a = "+Arrays.toString(a) +" , b="+Arrays.toString(b));

        System.err.println("xxx "+(Arrays.equals(toArray, toArray1)));  // true 

 

一般在需要将List转成Array的时候,都是调用 Bean arr[] = list.toArray(new Bean[0]);这样的一句代码去完成的。 

但是,稍微看一下就会有点奇怪,为什么传入的参数是 new Bean[0] ,而不是 new Bean[list.size()] ? 

 

 其中两种情况下返回的值是相同的。! 

 

but why ??? 

// java.util.ArrayList#toArray(T[])

 

    public <T> T[] toArray(T[] a) {

        if (a.length < size)

            // Make a new array of a's runtime type, but my contents:

            return (T[]) Arrays.copyOf(elementData, size, a.getClass());

        System.arraycopy(elementData, 0, a, 0, size);

        if (a.length > size)

            a[size] = null;

        return a;

    }

 

源码写的清清楚楚了,就是如果当前传入的数组的长度小于当前list的长度,就直接返回一个新的数组。 

而如果传入的数组长度大于list长度,前面的复制进来了。数组后面的元素从size开始,都是 null 了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/540171.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS7使用firewalld打开关闭防火墙与端口(转载)

1、firewalld的基本使用 启动&#xff1a; systemctl start firewalld 查看状态&#xff1a; systemctl status firewalld 停止&#xff1a; systemctl disable firewalld 禁用&#xff1a; systemctl stop firewalld 2.systemctl是CentOS7的服务管理工具中主要的工具&#xff…

多任务管理类 MutilTaskManager

计算和计算所需的数据能被较为平均的非配到若干task的时候&#xff0c;下面的任务管理类可以提供在大数据大计算量的情况下非精确的控制task的执行数量来限制计算量和内存占用量.下面是代码&#xff08;非线程安全版本&#xff09;&#xff1a; public class MutilTaskManager{…

[转载] Scanner和bufferreader读取控制台字符的区别

参考链接&#xff1a; Java中Scanner和BufferReader类之间的区别 从开始学习Java就用了scanner&#xff0c;因为比较简单每当遇到空格键或者换行键则读取下一个字符&#xff0c;一般用法 while(input.hasNextInt()){ int n input.nextInt(); int t input.nextInt(); int c …

Node.js meitulu图片批量下载爬虫1.051

原有1.05版程序没有断点续传模式&#xff0c;现在在最近程序基础上改写一版1.051. // // meitulu图片批量下载爬虫1.051 // 用最近的断点续传框架改写原有1.05版程序 // 2017年11月21日 //// 内置https模块 var httpsrequire("https");// 内置http模块 var httprequi…

[转载] Java实现归并排序(超详细,新手请进)

参考链接&#xff1a; Java中将数组合并为的新数组 归并排序 大家好&#xff0c;这是我第一次在CSDN上写东西&#xff0c;因为我一直觉得有需要就去找别人的blog看看就好&#xff0c;但我发现自己写出来的东西确实能加深记忆。我半路出家&#xff0c;属实是个菜鸟&#xff0…

centos6设置静态IP

#编辑配置文件,添加修改以下内容 vim /etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTOstatic #启用静态IP地址 ONBOOTyes #开启开机自动启用网络连接 IPADDR192.168.21.129 #设置IP地址 NETMASK255.255.255.0 #设置子网掩码 GATEWAY192.168…

[转载] 1022 D进制的A+B (20分)【java题解】【80ms】

参考链接&#xff1a; Java流Stream 题解 使用 toUnsignedString&#xff08;&#xff09;即可 我有仔细读过toUnsignedString&#xff08;&#xff09;&#xff0c;有兴趣可以看看 第3章 java的基本程序设计结构【补缺学习】【注释与数据类型】【核心技术卷I】 impor…

mysql 5.6.4以上版本innodb支持全文索引的测试

对于mysql 5.6.4以上版本innodb支持全文索引的测试 在mysql官网&#xff0c;innodb引擎在5.6.4版本提供了对全文索引的支持&#xff0c;笔者对此做了测试&#xff0c;发现对中文全文检索的支持依然不理想&#xff0c;但却确实提供了对英文的全文支持。 12.9.5 Full-Text Restri…

[转载] Java字符串分割方法

参考链接&#xff1a; Java中的StringTokenizer方法的示例 2 [sizemedium]1.用split()方法进行分割&#xff0c;分割开的子字符串放入数组&#xff0c;然后进行处理。 示例代码如下&#xff1a; public class SplitTest { /** * param args * author colin */ …

[转载] Java StringBuilder StringJoiner

参考链接&#xff1a; 何时在StringBuilder上使用StringJoiner 1. StringBuilder Java编译器对String做了特殊处理&#xff0c;使得我们可以直接用拼接字符串。 虽然可以直接拼接字符串&#xff0c;但是&#xff0c;在循环中&#xff0c;每次循环都会创建新的字符串对象&a…

EMC VMAX的磁盘构成,fast policy(重要)

首先是流程&#xff0c; 不同种类的磁盘&#xff08;sata&#xff0c;fc&#xff0c;flah&#xff09;->disk group->raid->DATA volume->thin pool->TDEV and BCVDEV (lun) 然后细看&#xff1a; 1&#xff09; 不同种类的磁盘叫做disk&#xff0c;这是可见的物…

[转载] Java反射是什么?看这篇绝对会了!

参考链接&#xff1a; Java中的util.Arrays与Reflection.Array的示例 作者&#xff1a;火星十一郎 https://www.cnblogs.com/hxsyl 一.概念 反射就是把Java的各种成分映射成相应的Java类。 Class类的构造方法是private&#xff0c;由JVM创建。 反射是java语言的一个特性…

[精讲-3]Offline Domain Join

从windows 2008 ,windows 7开始起就具备脱机加入域的功能,就是它们在未连接DC的情况下,也可以加入域. 假如环境lab.com ,一台已加入域的PC (WIN7Client) 和即将加入域的PC(win7-2) 在win7client上run下面这个命令 DC已作了一次预先的动作:创建了computer object 在win7-2上,用本…

[转载] Java——toArray,集合转换为数组

参考链接&#xff1a; 从ArrayList到Java的Array数组转换&#xff1a;toArray()方法 package day04; import java.util.ArrayList; import java.util.Collection; /** * 集合转换为数组 * Collection中定义了两个方法 * Object[] toArray * <T>Y[] toArray(T[] array) …

c#匿名方法

//以下示例和说明都源于《visual c# 2005 技术内幕》 //匿名函数就是没有名字的函数&#xff0c;是专用于委托的函数。 using System; using System.Collections.Generic; using System.Text; namespace 匿名方法 { public delegate void DelegateClass(); public dele…

[转载] JAVA8 创建流的5种方式

参考链接&#xff1a; 用Java创建流的10种方法 java8中的流式操作是一个很重要的内容 1、通过 stream 方法把 List 或数组转换为流&#xff0c;如Arr.stream()&#xff1b; //通过stream方法把List或数组转换为流 Arrays.asList("a1", "a2", "a3&…

用户反馈:对 Rafy 开发框架的一些个人建议

对Rafy开发框架的一些个人建议 1、潜在使用群体分析 个人认为使用类似Rafy、AgileEAS.NET、PDF.NET及OpenWorks框架的群体主要为以下几种&#xff1a; 1.1、小微软件企业 小微软件企业&#xff0c;这类软件公司的开发人员一般在10人以下&#xff0c;多以项目实施为主基本谈不上…

[转载] Java8新特新--Stream语法应用在ArrayList的元素移除和排序

参考链接&#xff1a; 如何在Java 8中打印Stream的元素 单元测试&#xff1a; Test public void Test02(){ // 源 ArrayList<Integer> IdsSour new ArrayList<>(); IdsSour.add(5); IdsSour.add(1); IdsSour.add(3); IdsSour.add(2); IdsSour.add(6); IdsSour.a…

搭建iscsi存储系统

搭建iscsi存储系统 NAS和SAN服务器概述 NAS网络附属存储&#xff1a; NAS&#xff08;Network Attached Storage)&#xff0c;NAS服务器是连接在网络上&#xff0c;具备资料存储功能的服务器&#xff0c;一种与用数据存储服务器。网络附属存储基于标准网络协议&#xff08;Tcp/…