怎么样让TreeSet判断两元素是否相同?

qq_31134691 2015-11-06 04:09:40
代码如下:
---------------------------------------------------------------------------------------------------------------------
import java.io.*;
import java.util.*;

class Per implements Comparable<Per> {
public String name;
public String StudentNumber;
public int score;

public Per(String name, String StudentNumber, int score) {
this.name=name;
this.StudentNumber=StudentNumber;
this.score=score;
}

public String toString() {
return this.name+" "+this.StudentNumber+" "+this.score;
}

public boolean equals(Object obj) {
if (this==obj)
return true;

if (!(obj instanceof Per))
return false;

Per per=(Per)obj;

if (this.StudentNumber.equals(per.StudentNumber))
return true;
else
return false;
}

public int hashCode() {
return this.StudentNumber.hashCode();
}

public int compareTo(Per per) {
if (this.StudentNumber.equals(per.StudentNumber))
return 0;
else if (this.score > per.score)
return -1;
else
return 1;
}
}

public class Test14 {
public static void main(String[] args) {
Set<Per> set=new TreeSet<Per>();
set.add(new Per("sl", "9007", 100));
set.add(new Per("li", "9005", 2));
set.add(new Per("ly", "9006", 2));
set.add(new Per("ly", "9006", 64));

System.out.println(set);
}
}


这段代码输出结果为:[sl 9007 100, ly 9006 64, li 9005 2, ly 9006 2],并没有把学号同为9006的看成重复元素


所以怎么样让TreeSet判断两元素是否相同?
...全文
129 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingbenfeng 2015-11-06
  • 打赏
  • 举报
回复
你实现的compareTo方法有问题。 如果你用这个的话,就不会有问题了。 public int compareTo(Per per) { return this.StudentNumber.compareTo(per.StudentNumber); }

50,639

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧