Comparator与Comparable,自定义排序和类比较器,TreeSet对象排序

/**
 * 学生类
 * @author Administrator
 *
 */
public class Student {

    private String sno ;
    private String sname ;
    private Integer score ;

    public Student(String sno, String sname, Integer score) {
        super();
        this.sno = sno;
        this.sname = sname;
        this.score = score;
    }
    public String getSno() {
        return sno;
    }
    public void setSno(String sno) {
        this.sno = sno;
    }
    public String getSname() {
        return sname;
    }
    public void setSname(String sname) {
        this.sname = sname;
    }
    public Integer getScore() {
        return score;
    }
    public void setScore(Integer score) {
        this.score = score;
    }

import java.util.Comparator;
/**
 * 比较算法的类,比较器
 * @author Administrator
 *
 */
public class MyCmp implements Comparator<Student>{

    @Override
    public int compare(Student o1, Student o2) {
        // TODO Auto-generated method stub
        if (o1.getScore() > o2.getScore()) {
            return 1;
        } else if (o1.getScore() < o2.getScore()) {

return -1;
        } else {
            return 0;
        }
    }

package tr
import java.util.TreeSet;
//测试类
public class Test {

    public static void main(String[] args) {
        TreeSet<Student> set = new TreeSet<Student>(new MyCmp());
        Student s1 = new Student("1001","chen",67);
        Student s2 = new Student("1001","zhang",17);
        Student s4 = new Student("1003","zeng",47);
        Student s5 = new Student("1004","wang",87);
        Student s6 = new Student("1005","chao",67);
        Student s3 = new Student("1002","zhou",62);
        set.add(s1);
        set.add(s2);
        set.add(s3);
        set.add(s4);
        set.add(s5);
        set.add(s6);for(java.util.Iterator<Student> it= set.iterator();it.hasNext();){
            Student s = it.next();
            System.out.println(s.getSno()+","+s.getSname()+","+s.getScore());
        }
    }

}

/**
 * 学生类
 * @author Administrator
 *
 */
public class Student1 implements Comparable<Student1>{

    private String sno ;
    private String sname ;
    private Integer score ;

    public Student1(String sno, String sname, Integer score) {
        super();
        this.sno = sno;
        this.sname = sname;
        this.score = score;
    }
    public String getSno() {
        return sno;
    }
    public void setSno(String sno) {
        this.sno = sno;
    }
    public String getSname() {
        return sname;
    }
    public void setSname(String sname) {
        this.sname = sname;
    }
    public Integer getScore() {
        return score;
    }
    public void setScore(Integer score) {
        this.score = score;
    }

    // 自定义排序规则
    @Override
    public int compareTo(Student1 s) {
        if (this.getScore() > s.getScore()) {
            return 1;
        } else if (this.getScore() < s.getScore()) {
            return -1;
        } else {
            return 0;
        }
    }

}

原文地址:https://www.cnblogs.com/bigsiji/p/9591506.html

时间: 2024-10-10 15:07:13

Comparator与Comparable,自定义排序和类比较器,TreeSet对象排序的相关文章

Comparator和Comparable在排序中的应用

当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序. 一.Comparator 强行对某个对象collection进行整体排序的比较函数,可以将Comparator传递给Collections.sort或Arrays.sort. 接口方法: public class SalesItemComparatorByFirstLetter implements Comparator<SalesItem> { @Over

java的Comparator和Comparable

java的Comparator和Comparable 当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序.      一.Comparator 强行对某个对象collection进行整体排序的比较函数,可以将Comparator传递给Collections.sort或Arrays.sort. 接口方法:   /**    * @return o1小于.等于或大于o2,分别返回负整数.零或正整数.    */  

Comparator与Comparable的应用

当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序. 阅读过程中有任何问题,请联系egg: 邮箱:[email protected]   微博:http://weibo.com/xtfggef 如有转载,请说明出处:http://blog.csdn.net/zhangerqing 一.Comparator 强行对某个对象collection进行整体排序的比较函数,可以将Comparator传递给Collectio

Java集合中对象排序

集合中的对象排序需求还是比较常见的,当然我们可以重写equals方法,循环比较:同时Java为我们提供了更易使用的APIs.当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序. 下面通过两个例子分别用Comparable和Comparator实现对User对象中年龄排序. Comparable接口方式 类自身实现Comparable接口,实现该接口中的compareTo方法. import java.util.A

黑马程序员——【Java基础】——泛型、Utilities工具类、其他对象API

一.泛型 (一)泛型概述 1.泛型:JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制. 2.泛型技术是给编译器使用的技术,用于编译时期,确保类型的安全. 3.泛型的擦除:运行时,会将泛型去掉,生成class文件中的是不带泛型的,这个称为“泛型的擦除”.擦除泛型的原因是为了兼容运行时的类加载器. 4.泛型的好处:(1)将运行时期出现的问题ClassCastException,转移到了编译时期.方便于程序员解决问题,让运行时期问题减少.安全.(2)避免了强制转换的麻烦. 5.泛

比较器(Comparable、Comparator)类及 二叉树的排序算法

之前Arrays 类中存在sort() 方法, 此方法可以直接对 对象数组进行排序. 1.Comparable接口 可以直接使用java.util.Arrays 类进行数组的排序操作,但对象所在的类必须实现Comparable 接口,用于指定排序接口. Comparable 接口定义如下: public interface Comparable<T>{ public int compareTo(T o); } 此方法返回一个int 类型的数据,但是此int 的值只能是以下三种: 1:表示大于

Java://Comparator、Comparable的用法(按照要求将set集合的数据进行排序输出):

import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; //comparator.comparable的用法(按照要求将map集合的键值对进行顺序输出) import java.util.List; public class Test { public static <T> void sop(T t) { System.out.println(t); } public stat

java学习(十六):对象的自定义比较,Comparator和Comparable

通过两个例子实现对象的自定义排序 1.实现Comparator接口. 1 import java.util.ArrayList; 2 import java.util.Collections; 3 import java.util.Comparator; 4 import java.util.List; 5 6 public class StudentComparator implements Comparator<Object> 7 { 8 @Override 9 public int co

Java TreeSet集合排序 &amp;&amp; 定义一个类实现Comparator接口,覆盖compare方法 &amp;&amp; 按照字符串长度排序

package TreeSetTest; import java.util.Iterator; import java.util.TreeSet; import javax.management.RuntimeErrorException; /* 可以对set集合中的元素进行排序,其底层的数据结构是二叉树, 保证元素唯一性的依据是compareTo和return 0; TreeSet排序的第一种方式 让元素自身具备比较性 元素需要实现Comparable接口,覆盖compareTo方法 这种方式