老师,帮忙看下我的代码问题在哪呢?
代码如下
package com.bjsxt;
import java.util.Set;
import java.util.TreeSet;
public class TreeSetTest {
public static void main(String[] args) {
System.out.println("----------通过自身元素实现比较规则-----------");
Set<Users> set1 = new TreeSet<>();
Users u = new Users("hanxue",24);
Users u1 = new Users("admin",25);
Users u2 = new Users("sxt",25);
set1.add(u);
set1.add(u1);
set1.add(u2);
for(Users str1:set1){
System.out.println(str1);
}
}
}
package com.bjsxt;
import java.util.Objects;
public class Users implements Comparable<Users>{
private String name;
private int age;
public Users(){};
public Users(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Users{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Users users = (Users) o;
return age == users.age &&
Objects.equals(name, users.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int compareTo(Users o) {
if(this.age>o.age){
return 1;
}
if(this.name==o.name){
return this.name.compareTo(o.getName());
}
return -1;
}
}
运行结果如下:
----------通过自身元素实现比较规则-----------
Users{name='hanxue', age=24}
Users{name='sxt', age=25}
Users{name='admin', age=25}
Process finished with exit code 0
运行结果sxt怎么跑到admin前面了呢?请老师帮忙看看,谢谢!