package com.java.demo.Comparable;
import java.util.Iterator;
import java.util.TreeSet;
public class TestComparable {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TreeSet<Student> tset = new TreeSet<Student>();
tset.add(new Student(1, "zhangsan1", "男"));
tset.add(new Student(4, "zhangsan4", "女"));
tset.add(new Student(3, "zhangsan3", "男"));
tset.add(new Student(2, "zhangsan2", "女"));
printTreeSet(tset);
}
private static void printTreeSet(TreeSet<Student> tree) {
Iterator<Student> iterator = tree.iterator();
while (iterator.hasNext()) {
Student student = iterator.next();
System.out.println(student.toString());
}
}
/**
* 定义一个student的对象类
*/
static class Student implements Comparable<Student> {
private int id;
private String name;
private String sex;
public Student(int id, String name, String sex) {
this.id = id;
this.name = name;
this.sex = sex;
}
/* 实现 Comparable 接口中的 compareTo 方法,
* 通常大于时返回一个正数,小于时返回一个负数,
* 等于时返回零,具体情况可以自行决定。
*********************************************************
* 这里我根据 id 号的大小进行了比较。由于 TreeSet
* 会根据 compareTo 的结果来排序,因此输出结果
* 应该是按照 id 号从小到大排序的。
* 如果要根据姓名进行排序,只需对这个方法进行相应的修改。
*/
@Override
public int compareTo(Student o) {
if (id > o.id)
return 1;
else if (id == o.id)
return 0;
else
return -1;
}
public String toString() {
return this.id + "," + this.name + ";";
}
}
}
import java.util.Iterator;
import java.util.TreeSet;
public class TestComparable {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TreeSet<Student> tset = new TreeSet<Student>();
tset.add(new Student(1, "zhangsan1", "男"));
tset.add(new Student(4, "zhangsan4", "女"));
tset.add(new Student(3, "zhangsan3", "男"));
tset.add(new Student(2, "zhangsan2", "女"));
printTreeSet(tset);
}
private static void printTreeSet(TreeSet<Student> tree) {
Iterator<Student> iterator = tree.iterator();
while (iterator.hasNext()) {
Student student = iterator.next();
System.out.println(student.toString());
}
}
/**
* 定义一个student的对象类
*/
static class Student implements Comparable<Student> {
private int id;
private String name;
private String sex;
public Student(int id, String name, String sex) {
this.id = id;
this.name = name;
this.sex = sex;
}
/* 实现 Comparable 接口中的 compareTo 方法,
* 通常大于时返回一个正数,小于时返回一个负数,
* 等于时返回零,具体情况可以自行决定。
*********************************************************
* 这里我根据 id 号的大小进行了比较。由于 TreeSet
* 会根据 compareTo 的结果来排序,因此输出结果
* 应该是按照 id 号从小到大排序的。
* 如果要根据姓名进行排序,只需对这个方法进行相应的修改。
*/
@Override
public int compareTo(Student o) {
if (id > o.id)
return 1;
else if (id == o.id)
return 0;
else
return -1;
}
public String toString() {
return this.id + "," + this.name + ";";
}
}
}