黑马程序员技术交流社区

标题: 初级代码 求大神帮我看一下哪里错了 [打印本页]

作者: nbcallum    时间: 2015-4-20 11:48
标题: 初级代码 求大神帮我看一下哪里错了
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集合去重复,然后再转化成数组,但是报错了,大神帮我看下,谢谢

作者: 一个好人    时间: 2015-4-20 11:58
本帖最后由 一个好人 于 2015-4-20 11:59 编辑

不太清楚,,,
作者: 1017161726    时间: 2015-4-20 12:39
本帖最后由 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);
                   }

当然,你打印两次了。






作者: 关山明月    时间: 2015-4-20 12:40
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.                                                 }
复制代码


作者: nbcallum    时间: 2015-4-20 14:36
1017161726 发表于 2015-4-20 12:39
就是那个set.toArray(),TreeSet实现Set接口,Set接口中的方法toArray()返回的是Object类型的数组。强转数组 ...

3Q~ 原来如此!
作者: nbcallum    时间: 2015-4-20 14:39
关山明月 发表于 2015-4-20 12:40
set.toArray() 返回的是Object[] 类型的,Object[]类型不能直接转成String[] 类型,因为Object和String有父 ...

谢谢!!:lol
作者: 弯曲/mg抛物☀    时间: 2015-4-20 15:36
又学习了,加油。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2