java比较接口Comparable,对象排序存在TreeSet中
2012-07-10 16:09
495 查看
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 + ";";
}
}
}
相关文章推荐
- Java SE TreeSet(实现Comparable接口和Comparator匿名类)根据属性排序示例
- JAVA中Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序
- Java中实现对象的比较:Comparable接口和Comparator接口
- Java中实现对象的比较:Comparable接口和Comparator接口
- JAVA中Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序
- java中自定义对象排序(TreeSet)
- 对象的比较与排序(三):实现IComparable<T>和IComparer<T>泛型接口
- Java实例对象间的比较(实现Comparable接口)
- Effective Java 对于所有对象都通用的方法 12.考虑实现Comparable(可以比较)接口
- java集合——树集(TreeSet)+对象的比较
- Java排序之Comparable接口和Comparator接口的比较和应用示例
- Java HashSet TreeSet LinkedHashSet 三种Set接口实现的比较
- JAVA中Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序
- java使用Comparator与Comparable接口对对象排序
- 【Java面试题】42 TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常!
- JAVA中Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序
- JAVA中Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序
- Java基础知识强化之集合框架笔记45:Set集合之TreeSet存储自定义对象并遍历练习1(自然排序)
- Java中实现对象的比较:Comparable接口和Comparator接口
- Java中实现对象的比较:Comparable接口和Comparator接口