package com.arvin.hashdemo;
import java.util.TreeSet;
public class HashSetTest {
public static void main(String[] args) {
TreeSet<Person> treeSet = new TreeSet();
/* 此时会报错,是因为数据存入TreeSet会进行自动排序,比如说存入'A' 'C' 'B'时候,排序就会变为 'A' 'B' 'C'
当存入自定义数据类型的时候,系统就不知道该如何排序了,所以就会抛出异常。
这个时候有两种解决方式:
1.改用数据结构,使用不需要进行排序的数据结构,比如HashSet。
2.在原类(示例为Person类)中实现Comparable接口,并且自定义的给出一个比较的方法。
*/
treeSet.add(new Person("peter",23));
treeSet.add(new Person("coma", 67));
System.out.println(treeSet);
}
}
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
package com.arvin.hashdemo;
// 此处要实现Compareable接口
public class Person implements Comparable {
private String name;
private int age;
Person() {
}
public Person(String name, int number) {
this.name = name;
this.age = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNumber() {
return age;
}
public void setNumber(int number) {
this.age = number;
}
// 此处为实现接口以后重写的抽象方法compareTo
@Override
public int compareTo(Object o) {
//this当前对象 与 31 比较,此处为自定义的比较规则,无实际意义,仅供参考
if (this.age > 31) {
return 1;
} else if (this.age == 31) {
return 0;
}
return -1;
}
// 此处为重写的toString方法
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}