java 两种方式实现自定义排序
2011-11-03 12:29
701 查看
package test; //Comparable 使对象本身具有可比性,这种方式称为元素的自然顺序或默认顺序 //Comparator 元素自身不具备比较性或者比较性不是所需要的,在集合初始化让其具有比较性 (更实用) import java.util.*; //class public class TreeSetDemo { public static void main(String[] args) { TreeSet<Student> st=new TreeSet<Student>(new MyComparator()); st.add(new Student("bca",23)); st.add(new Student("bca",23)); st.add(new Student("abc",29)); st.add(new Student("dcba",24)); for(Iterator<Student> it=st.iterator();it.hasNext();) { Student p=it.next(); System.out.println(p.getName()+"==="+p.getAge()); } } } class Student implements Comparable<Student> //实现了接口必须实现compare(); { private String name; private int age; Student(String name,int age) { this.name=name; this.age=age; } String getName() { return name; } int getAge() { return age; } @Override public int compareTo(Student st)//实现compare方法 { if(this.age>st.age) return 1; if(this.age==st.age) return 0; return -1; } } //Object类实现了equail();所以实现接口以下时只需对compare()重写即可 class MyComparator implements Comparator<Student>//实现了接口必须实现compare(); { @Override public int compare(Student s1,Student s2) { int num=s1.getName().compareTo(s2.getName()); if(num==0) { return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge()));//Integer 类实现了Comparable接口 // if(s1.getAge()>s2.getAge()) // return 1; // if(s1.getAge()==s2.getAge()) // return 0; // return -1; } return num; } }
相关文章推荐
- 快速排序的两种实现方式(Java)
- 自定义类型数组排序的两种实现方式
- JAVA之旅(二十)—HashSet,自定义存储对象,TreeSet,二叉树,实现Comparator方式排序,TreeSet小练习
- Java编程之TreeSet排序两种解决方法(1)元素自身具备比较功能,元素需要实现Comparable接口覆盖compare(2)创建根据自定义Person类的name进行排序的Comparator
- JAVA之旅(二十)—HashSet,自定义存储对象,TreeSet,二叉树,实现Comparator方式排序,TreeSet小练习
- java线程实现的两种方式实例
- java动态代理的两种实现方式
- java的两种线程实现方式
- java中实现同步的两种方式:syschronized和lock的区别和联系
- Java_HashMap的两种排序方式
- 极光推送经验之谈-Java后台服务器实现极光推送的两种实现方式
- TreeSet的排序两种实现方式Comparator和Comparable
- Java多线程——常用的实现多线程的两种方式
- JAVA 中Comparator接口实现自定义排序的理解
- Java多线程的实现方式比较(两种方式比较)
- java实现深拷贝的两种方式及效率比较
- 自定义异常的两种处理方式实现
- TreeSet集合排序两种实现方式Comparable和Comparator比较
- Java Collections.sort()实现List排序的默认方法和自定义方法
- Java中有两种实现多线程的方式以及两种方式之间的区别