A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

import java.util.*;
public class Test {

        public static void main(String[] args) {
                        String[] str = {"a","b","a","b","c","a","b","c","d"};
                        Set<String> set = new TreeSet<String>();
        for(int i = 0;i < str.length;i++){

                                        set.add(str[i]);
                            }
                        System.out.println(set); /*这里可以打印*/
                        String[] str1 = (String[])set.toArray();
                        for(String str2 : str1){
                    System.out.println(str2); /*
这里报错:Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; can
not be cast to [Ljava.lang.String;
*/

                    }
               
            }
}

就是想用Set集合去重复,然后再转化成数组,但是报错了,大神帮我看下,谢谢

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

6 个回复

倒序浏览
本帖最后由 一个好人 于 2015-4-20 11:59 编辑

不太清楚,,,
回复 使用道具 举报
本帖最后由 1017161726 于 2015-4-20 12:44 编辑

就是那个set.toArray(),TreeSet实现Set接口,Set接口中的方法toArray()返回的是Object类型的数组。强转数组转不了。这么转类型:
                 System.out.println(set); /*这里可以打印*/
                 Object [] str1 = set.toArray();
                 for(Object str2 : str1)
                 {
                       String s=(String)str2;
                       System.out.println(str2);
                   }

当然,你打印两次了。





回复 使用道具 举报
set.toArray() 返回的是Object[] 类型的,Object[]类型不能直接转成String[] 类型,因为Object和String有父子关系,而Object[]和String[]没有父子关系。你可以不必转成Object[]类型,在循环的时候再转
  1. Object[] str1=set.toArray();
  2.                         for(Object str2 : str1)
  3.                                                 {
  4.                                                         System.out.println((String)str2);
  5.                                                 }
复制代码

回复 使用道具 举报 2 0
1017161726 发表于 2015-4-20 12:39
就是那个set.toArray(),TreeSet实现Set接口,Set接口中的方法toArray()返回的是Object类型的数组。强转数组 ...

3Q~ 原来如此!
回复 使用道具 举报
关山明月 发表于 2015-4-20 12:40
set.toArray() 返回的是Object[] 类型的,Object[]类型不能直接转成String[] 类型,因为Object和String有父 ...

谢谢!!:lol
回复 使用道具 举报
又学习了,加油。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马