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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SpringBoot 事务注解@Transactional

    SpringBoot 事务注解@TransactionalSpringBoot提供了非常方便的事务操作,通过注解就可以实现事务的回滚,非常方便快捷,下面我们就说一下如何进行事务操作。1.事务说明在Spring中,事务有两种实现方式,分别是编程式事务管理和声明式事务管理两种方式。编程式事务管理:编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,…

    2022年5月8日
    222
  • echarts 应用数个样例

    echarts 应用数个样例

    2022年1月27日
    53
  • 文件上传/上传图片预览

    文件上传/上传图片预览

    2022年3月12日
    53
  • redisson连接池配置_redis连接池原理

    redisson连接池配置_redis连接池原理文章目录PreCode初始化槽计算无需手工调用close方法PreRedis进阶-Redis集群原理剖析及gossip协议初探集群原理部分简单的提了下Jest是如何实现RedisCluster的,这里我们再来梳理一下Codeimportredis.clients.jedis.HostAndPort;importredis.clients.jedis.JedisCl…

    2022年10月14日
    2
  • tl494cn逆变器电路图_用TL494制作的逆变电源[通俗易懂]

    tl494cn逆变器电路图_用TL494制作的逆变电源[通俗易懂]TL494集成块广泛应用在开关电源,其内部集成有PWM、三角波发生器、电池欠压检测,+5V电压基准等电路,具有外接元件少,控制稳定的特点。笔者在网上查阅大量资料,自制了一款准正弦波300W逆变器,采用直流12V电瓶供电,可供小功率单相电机、日光灯等电感性负载用电,电路如附图所示。该逆变板工作频率由TL494⑤、⑥脚外接阻容元件确定,本例为2.2kHz左右。该频率的大小直接影响功率场效应管的功率损耗…

    2022年6月3日
    157
  • 记录mybatis分页查询失败[通俗易懂]

    记录mybatis分页查询失败[通俗易懂]在进行mybatis的分页查询时出现ExceptionInIntializerError错误代码信息如下在检查mapper和插件配置后,试着换了一下mybatis的版本后原版本替换后版本成功的进行了分页查询

    2022年6月2日
    49

发表回复

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

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