JAVA的set集合的toArray()方法

官方JDK6文档给出的解释

在这里插入图片描述
在这里插入图片描述

对于这两种重载的不同方法,由于参数不同,则返回的类型也是不同

使用

  • 第一个方法返回的是一个Object[]类,这个类也是继承自Object类,因此他和String[]是同级的关系,不能进行转换为String[]类型,也没有对应的方法。
		Set<Object> set1 = new HashSet<>();
        set1.add(1);
        set1.add(2);
        set1.add(3);
        set1.add(4);
        
        Integer[] set1_array =  set1.toArray();//java: 不兼容的类型: java.lang.Object[]无法转换为java.lang.String[]

同样,我们可以利用迭代器对此Object[]类进行遍历,由于传入集合中的为Integer类型,因此每个数据也为Integer类型,如下程序:

Set<Object> set1 = new HashSet<>();
        set1.add(1);
        set1.add(2);
        set1.add(3);
        set1.add(4);

        Object[] set1_array = set1.toArray();
        for(Object a: set1_array){
            System.out.println(a.getClass().getName()+ "数据为" + a);
        }
        //java.lang.Integer数据为1
		//java.lang.Integer数据为2
		//java.lang.Integer数据为3
		//java.lang.Integer数据为4

因此可以发现Object[]为一个单独的类
如果我们要转换其中的内容为其他类型可以通过遍历进行转换,例如下面程序:

Set<Object> set1 = new HashSet<>();
        set1.add(1);
        set1.add(2);
        set1.add(3);
        set1.add(4);

        Object[] set1_array = set1.toArray();
        for(Object a: set1_array){
            String b = a.toString();
            System.out.println(b.getClass().getName()+ "数据为" + b);
        }
        /*java.lang.String数据为1
        java.lang.String数据为2
        java.lang.String数据为3
        java.lang.String数据为4*/
  • 第二个方法的使用即可以将集合set转换为对应类型的数组
    如下程序所示:
Set<Integer> set1 = new HashSet<>();
        set1.add(1);
        set1.add(2);
        set1.add(3);
        set1.add(4);

        Integer[] set1_array = set1.toArray(new Integer[0]);
        for(Integer a: set1_array){
            System.out.println(a.getClass().getName()+ "数据为" + a);
        }
        /*
        * java.lang.Integer数据为1
          java.lang.Integer数据为2
          java.lang.Integer数据为3
          java.lang.Integer数据为4
          */

c利用第二种重载方法,即可将set数组转换为指定格式的数组

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值