问题描述:编写以下程序时,能够正常编译,但运行时报异常
package sample;
import java.util.*;
public class SetTest
{
public static void print(Set s1)
{
Iterator iter=s1.iterator();
while(iter.hasNext())
{
System.out.print(iter.next()+" ");
}
System.out.println();
}
public static void main(String[] args)
{
System.out.println("------------------------------");
Set s2=new TreeSet();
System.out.println("s2的大小:"+s2.size());
s2.add("ads");
s2.add("Hello world");
s2.add(123);
System.out.println("s2的大小:"+s2.size());
print(s2);
}
}
运行时异常提示:
Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
at java.lang.Integer.compareTo(Integer.java:52)at java.util.TreeMap.put(TreeMap.java:568)
at java.util.TreeSet.add(TreeSet.java:255)
at sample.SetTest.main(SetTest.java:33)
原因:String cannot be cast to java.lang.Integer,String类型数据不能转到Integer类型,这是因为程序中的TreeSet中添加数据时要求进行对数据排序,而进行比较时只能在统一的类型下面比较,所以Integer 类型的和String类型的就会不能比较,所以报异常
解决方法:将add()函数中的内容全部修改为字符串类型,即add("123");,之后就能正常运行了