toArray()与toArray(T [] a)的区别「建议收藏」

toArray()与toArray(T [] a)的区别「建议收藏」1、Object[]toArray()原理:将集合转换为Object类型的数组并返回该数组(以首地址的形式)。 调用格式:Object[]a=collecton.toArray() 注意:(1)前面类型必须为Object[]且不能被强制转换。(2)需要在遍历Objecta[]时,再强制转换a[n]的类型。由于编译器在语法上无法检测到类型错误,容易

大家好,又见面了,我是你们的朋友全栈君。

1、Object[] toArray()
原理:将集合转换为Object类型的数组并返回该数组(以首地址的形式)。 

调用格式: Object []a=collecton.toArray() 

注意:(1)前面类型必须为Object[]且不能被强制转换。
           (2)需要在遍历Object a[]时,再强制转换a[n]的类型。由于编译器在语法上无法检测到类型错误,容易出现类型使用不当。

附注:
collection.toArray()是旧式的获得对象数组的方法。

在java5引入泛型之前,这是唯一的获得对象数组的方法。



2、<T> T[] toArray(T[] a)
原理:根据参数数组的类型,构造了一个与向量元素个数相等的空数组。
调用格式: 
(1)String a[] = collection.toArray(new String[0]);//将collection中的内容保存到数组a中。
(2)return collection.toArray(new String[0])//若数组容量太小,将自动重新分配一个数组。
这个方法安全,明确。
(3)String s[] = collection.toArray(new String[collection.size()]);//姑且认为是最好的使用方式。
附注:toArray(T[] a)是Java5 引入泛型模板机制后的新调用方法。区别就是明确了类型。
如果Collection在创建时明确了类型,比如Collection<String>,这里的方法也有了相应的类型。编译器可以检测到类型错误。

代码示例:
public class RandomTeacher {
	private static String[] getRandomteachers(String[] teachers, int n) {
		Vector<String> vName = new Vector<String>();

		for (int i = 0; i < n; i++) {
			while (true) {
				Random random = new Random();

				int index = random.nextInt(teachers.length - 1);
				if (vName.contains(teachers[index]) == false) {
					vName.add(teachers[index]);
					break;
				}
			}
		}
		//1.
//		return vName.toArray(new String[1]);//以空数组作为参数
		
		//2.
//		String [] choosedTeacher = new String[3];//当空间不够用时,toArray(T[] a)会自动分配一个新的数组
//		vName.toArray(choosedTeacher);

		//3.姑且认为是最好的。
		return vName.toArray(new String[vName.size()]);
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String teachers[] = { "张", "赵", "刘", "钱", "孙", "李", "周", "吴", "郑", "王" };
		String[] choosedTeachers = RandomTeacher.getRandomteachers(teachers, 5);
		for (int i = 0; i < choosedTeachers.length; i++)
			System.out.println("teacher " + (i + 1) + " : "+ choosedTeachers[i]);

	}

}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/146524.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月14日 下午11:40
下一篇 2022年5月15日 上午6:00


相关推荐

  • pytorch学习笔记(十):MLP[通俗易懂]

    pytorch学习笔记(十):MLP[通俗易懂]文章目录1.隐藏层2.激活函数2.1ReLU函数2.2sigmoid函数2.3tanh函数3多层感知机4.代码实现MLP4.1获取和读取数据4.2定义模型参数4.3定义激活函数4.4定义模型4.5定义损失函数4.6训练模型小结1.隐藏层多层感知机(multilayerperceptron,MLP)在单层神经网络的基础上引入了一到多个隐藏层(hiddenlayer)。隐藏层位于输入层和输出层之间。图3.3展示了一个多层感知机的神经网络图,它含有一个隐藏层,该层中有5个隐

    2022年6月16日
    35
  • 初识Zigbee协议栈及其安装

    初识Zigbee协议栈及其安装1.什么是Zigbee协议栈?什么是ZigBee协议栈呢?它和ZigBee协议有什么关系呢?协议是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式,通俗点来理解就是协议栈是协议和用户之间的一个接口,开发人员通过使用协议栈来使用这个协议的,进而实现无线数据收发。ZigBee的协议分为两部分,IEEE802.15.4定义了PHY(物理层)和MAC(介质访问层)技术规范;ZigBee联盟定义了NWK(网络层)、APS(

    2022年5月8日
    41
  • 微信小程序onLoad、onShow、onHide、onUnload区别[通俗易懂]

    微信小程序onLoad、onShow、onHide、onUnload区别[通俗易懂]onLoad:页面第一次加载时触发,从跳转页面返回时不能触发,可以传递参数onShow:页面显示或从后台跳回小程序时显示此页面时触发,从跳转页面返回时触发,不能传递参数onHide:页面隐藏,例如使用wx.navigateTo只是打开新页面并不关闭原页面onUnload:页面被卸载,例如使用wx.redirectTo重定向一个页面原页面已经关闭当初始化或打开一个新…

    2022年6月15日
    379
  • Java面试宝典(超级详细)「建议收藏」

    一、Java基础1.JDK和JRE有什么区别?JDK:JavaDevelopmentKit的简称,java开发工具包,提供了java的开发环境和运行环境。JRE:JavaRuntimeEnvironment的简称,java运行环境,为java的运行提供了所需环境。具体来说JDK其实包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具。简单来说:如果你需要运行java程序,只需安装JRE就可

    2022年4月5日
    45
  • Ubuntu如何卸载软件_ubuntu卸载桌面

    Ubuntu如何卸载软件_ubuntu卸载桌面ubuntu卸载软件方法

    2022年10月5日
    6
  • intellij idea 激活码 2021.5【在线注册码/序列号/破解码】[通俗易懂]

    intellij idea 激活码 2021.5【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    56

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号