黑马程序员技术交流社区
标题:
今天遇到一个问题
[打印本页]
作者:
fenzheng
时间:
2014-3-14 23:30
标题:
今天遇到一个问题
为没事treeset,存代码,我只存进去一个呢,我命名写了4哥对象的呀??????
package jihe;
import java.util.*;
public class TreeSetDemo {
public static void main(String[] args) {
TreeSet ts = new TreeSet();
ts.add(new student("lisi02", 22));
ts.add(new student("lisi007", 20));
ts.add(new student("lisi09", 19));
ts.add(new student("lisi01", 19));
Iterator it = ts.iterator();
/*while (it.hasNext()) {
student stu = (student) it.next();
System.out.println(stu.getName() + "..." + stu.getAge());
System.out.println("treeset ts里放的元素的个数是:"+ts.size()+"个");
}*/
for(int i=0;i<ts.size();i++){
System.out.println("ts集合的元素是"+ts.toString()+"ts集合的size()是"+ts.size());
}
}
}
class student implements Comparable// ǿ����ѧ�������бȽ��ԣ�
{
private String name;
private int age;
student(String name, int age) {
this.name = name;
this.age = age;
}
public int compareTO(Object obj) {
if (!(obj instanceof student))
throw new RuntimeException("����ѧ�����");
student s = (student) obj;
System.out.println(this.name + "..compare TO.." + s.name);
if (this.age > s.age)
return 1;
if (this.age == s.age)
return this.name.compareTo(s.name);
return -1;
}
public int getAge() {
// TODO Auto-generated method stub
return age;
}
public String getName() {
// TODO Auto-generated method stub
return name;
}
// @Override
/*
* public int compareTo(Object o) { // TODO Auto-generated method stub
* return 0; }
*/
/*
* @Override public int compareTo(Object o) { // TODO Auto-generated method
* stub return 0; }
*/
@Override
public int compareTo(Object o) {
// TODO Auto-generated method stub
return 0;
}
}
复制代码
??????????????????????????????奇怪
作者:
chen_x
时间:
2014-3-14 23:54
程序里student类中为什么有一个compareTO函数,最后面还有一个compareTo()函数?是不是写错了
TreeSet集合元素自带比较性时,往集合里add元素,是自动调用元素对象的compareTo方法,你程序里这个compareTo()方法对任意2个元素比较都是返回0,也就是任意2个元素比较都是相等的,所以TreeSet里只存进了第一个元素。
把程序里compareTo()函数删掉,将compareTO()函数名改成compareTo()就行了。
另,最好是重写student类的toString()方法,方便打印集合元素。
作者:
张贺
时间:
2014-3-15 00:05
你的student类中重写compareTo方法的时候始终返回的是0,如果对象通过compareTo比较相等,就无法将其添加到TreeSet集合中,你在上面还定义了一个compareT0的方法,不知道是写错了,还是怎么!如果把那个方法当作重写的compareTo就不会出现你所说的错误!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2