标题: java中集合小错误 [打印本页] 作者: 陈欢 时间: 2012-7-20 22:37 标题: java中集合小错误 public class Test
{
public static void main(String[] args)
{
List<Roleright> list = new ArrayList<Roleright>();
list.add(new Roleright());
list.add(new Roleright());
list.add(new Roleright());
Set<Roleright> set = new TreeSet<Roleright>();
set.addAll(list);
}
}
//做了一个集合的练习程序,为什么出现这个错误提示呢,是哪里用错了呢,
Exception in thread "main" java.lang.ClassCastException: entity.Roleright
at java.util.TreeMap.compare(Unknown Source)
at java.util.TreeMap.put(Unknown Source)
at java.util.TreeSet.add(Unknown Source)
at java.util.AbstractCollection.addAll(Unknown Source)
at java.util.TreeSet.addAll(Unknown Source)
at Test.main(Test.java:18)作者: 吴立杰 时间: 2012-7-20 23:21
楼主,放在TreeSet里的自定义对象是需要比较器的,import java.util.*;
class Mycompare implements Comparator<Student>
{
public int compare(Student s,Student s1)
{
int num = s.getAge()-s1.getAge();
return num==0?s.getName().compareTo(s1.getName()):num;
}
}
class Student implements Comparable<Student>
{
private String name;
private int age;
public void setName(String name)
{
this.name=name;//这里是将外界传过来的值付给了成员变量。
}
public String getName()
{
return name;
}
public void setAge(int age)
{
this.age=age;//这里是将外界传过来的值付给了成员变量。
}
public int getAge()
{
return age;
}
public String toString()
{
return this.name+"****"+this.age;
}
public int compareTo(Student s)
{
int num = this.name.compareTo(s.name)
return num==0?(this.age-s.age):num;
}
}
class TreeSetDemo4
{
public static void main(String[] args)
{
TreeSet<Student> st = new TreeSet();
//TreeSet<Student> st = new TreeSet(new Mycompare());
//传递比较器,拓展功能。
Student s = new Student();
s.setName("aixi");
s.setAge(45);
Student s1 = new Student();
s1.setName("heihei");
s1.setAge(45);
Student s2 = new Student();
s2.setName("aaa");
s2.setAge(47);
st.add(s);
st.add(s1);
st.add(s2);//注意s1和s2重复了。
Iterator<Student> it = st.iterator();
while (it.hasNext())
{
Student sty = it.next();