黑马程序员技术交流社区
标题:
集合问题
[打印本页]
作者:
盛亚昆
时间:
2012-3-21 11:35
标题:
集合问题
import java.util.*;
class Student implements Comparable<Student>
{
private String name;
private int age;
private double fen;
Student (String name,int age,double fen)
{
this.name=name;this.age=age;this.fen=fen;
}
public void setName(String name)
{
this.name=name;
}
public void setAge(int age)
{
this.age=age;
}
public void setFen(double fen)
{
this.fen=fen;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
public double getFen()
{
return fen;
}
public int compareTO(Student s)
{
int num=new Integer(this.getAge()).compareTo(new Integer(s.getAge()));
if (num==0)
return this.getName().compareTo(s.getName());
return num;
}
public int hashCode()
{
return name.hashCode()+age*37;
}
public boolean equals(Object obj)
{
if (!(obj instanceof Student))
throw new ClassCastException("类型不匹配");
Student s=(Student)obj;
return this.name.equals( s.name)&&this.age==s.age;
}
}
class Student1
{
public static void main(String[] args)
{
TreeSet<Student> ts=new TreeSet<Student>();//是不是这里出现问题了啊 ??
ts.add(new Student("wangwu",20,78));
ts.add(new Student("zhangsan",20,98));
ts.add(new Student("lisi",20,80));
ts.add(new Student("zhaoliu",20,60));
ts.add(new Student("zhuqi",20,60 ));
Iterator<Student> it=ts.iterator();
while (it.hasNext())
{
Student s=it.next();
System.out.println(s.getName()+" ... "+s.getAge()+"..."+s.getFen());
}
}
}
错误 疑惑求指点
Noname2.java:2: Student 不是抽象的,并且未覆盖 java.lang.Comparable 中的抽象方法
compareTo(Student)
class Student implements Comparable<Student>
^
1 错误
作者:
乔玉吉
时间:
2012-3-21 11:52
把你的compareTO改成 compareTo就可以了
作者:
♂诸侯♂
时间:
2012-3-21 11:54
我试了一大会没有试出来。同意楼上的。哈哈。吸取教训了。呵呵。
作者:
盛亚昆
时间:
2012-3-21 12:12
哈哈我找了半天 谢谢啊
作者:
盛亚昆
时间:
2012-3-21 12:29
那怎么会少了zhuqi那 什么原因啊
zhaoliu ... 20...60.0
wangwu ... 20...78.0
lisi ... 20...80.0
zhangsan ... 20...98.0
作者:
泮和顺
时间:
2012-3-21 14:04
我怎么只打出一个student啊
作者:
张锦萍
时间:
2012-3-21 15:47
该为覆盖compareTo方法,运行了一下没问题,又改了一下年龄,再运行也没问题。
import java.util.*;
class Student implements Comparable<Student>
{
private String name;
private int age;
private double fen;
Student (String name,int age,double fen)
{
this.name=name;this.age=age;this.fen=fen;
}
public void setName(String name)
{
this.name=name;
}
public void setAge(int age)
{
this.age=age;
}
public void setFen(double fen)
{
this.fen=fen;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
public double getFen()
{
return fen;
}
public int compareTo(Student s)//这个地方改成覆盖compareTo方法
{
int num=new Integer(this.getAge()).compareTo(new Integer(s.getAge()));
if (num==0)
return this.getName().compareTo(s.getName());
return num;
}
public int hashCode()
{
return name.hashCode()+age*37;
}
public boolean equals(Object obj)
{
if (!(obj instanceof Student))
throw new ClassCastException("类型不匹配");
Student s=(Student)obj;
return this.name.equals( s.name)&&this.age==s.age;
}
}
class Student1
{
public static void main(String[] args)
{
TreeSet<Student> ts=new TreeSet<Student>();
ts.add(new Student("wangwu",20,78));
ts.add(new Student("zhangsan",28,98));
ts.add(new Student("lisi",20,80));
ts.add(new Student("zhaoliu",20,60));
ts.add(new Student("zhuqi",19,60 ));
Iterator<Student> it=ts.iterator();
while (it.hasNext())
{
Student s=it.next();
System.out.println(s.getName()+" ... "+s.getAge()+"..."+s.getFen());
}
}
}
作者:
盛亚昆
时间:
2012-3-21 15:59
谢谢指点
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2