/**
* 学生类
* @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;
}
} }

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

  1. java之Comparator与Comparable

    转自:http://blog.csdn.net/zhangerqing 当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定 ...

  2. java的Comparator和Comparable

    java的Comparator和Comparable 当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序.      ...

  3. Java集合中对象排序

    集合中的对象排序需求还是比較常见的.当然我们能够重写equals方法,循环比較:同一时候Java为我们提供了更易使用的APIs.当须要排序的集合或数组不是单纯的数字型时,通常能够使用Comparato ...

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

    ---------- android培训.java培训.期待与您交流! ---------- 一.泛型 (一)泛型概述 1.泛型:JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制 ...

  5. java集合框架之比较器Comparator、Comparable

    参考http://how2j.cn/k/collection/collection-comparator-comparable/693.html Comparator 假设Hero有三个属性 name ...

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

    package TreeSetTest; import java.util.Iterator; import java.util.TreeSet; import javax.management.Ru ...

  7. 集合排序 Comparator和Comparable的使用区别

    Java 排序 Compare  Comparator接口 Comparable接口 区别 在Java中使用集合来存储数据时非常常见的,集合排序功能也是常用功能之一.下面看一下如何进行集合排序,常用的 ...

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

    import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; //comparator. ...

  9. ht-8 对arrayList中的自定义对象排序( Collections.sort(List<T> list, Comparator<? super T> c))

    package com.iotek.set; import java.util.ArrayList; import java.util.Collections; import java.util.Co ...

随机推荐

  1. Spring @EventListener 异步中使用condition的问题

    @EventListener是spring在4.2+推出的更好的使用spring事件架构的方式,并且异步方式也很好设定 但是在spring4.2.7版本上使用eventlistener的conditi ...

  2. apply,call以及bind的区别

    每个函数都包含两个非继承而来的方法:apply()和 call(). 这两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内 this 对象的值. 一.apply() apply()方法 ...

  3. Spring.NET在MVC中实现业务层和UI层解耦

    最近在项目中用到了Spring.NET,使用它来实现业务层和UI层解耦.使用过程中难免遇到问题,现把遇到的一些问题整理出来,留作笔记. 使用的开发工具是vs2017,.netframework 4.6 ...

  4. ubuntu18安装微信

    1.从git下载tar包 wget http://github.com/geeeeeeeeek/electronic-wechat/releases/download/V2.0/linux-x64.t ...

  5. CSS 字体交互特效

    一.鼠标悬浮时,字体颜色从左到右依次变化<!DOCTYPE html> <html> <head> <meta charset="utf-8&quo ...

  6. Javascript 3.2

    对象的三种类型:1.用户定义对象:程序员自己创建的对象 2.内建对象:Javascript语言中的固定对象,如Array/Math/Data等 3.宿主对象:由浏览器提供的对象 BOM:浏览器对象模型 ...

  7. sklearn learn preprocessing

    train_test_split sklearn.model_selection.train_test_split(*arrays, test_size(float,int/None),#defaul ...

  8. vue原生table合并单元格并可编辑

    <template> <div> <div class="el-card box-card table_container"> <div ...

  9. 芯灵思Sinlinx A64 linux 通过设备树写LED驱动(附参考代码,未测试)

    开发平台 芯灵思Sinlinx A64 内存: 1GB 存储: 4GB 详细参数 https://m.tb.cn/h.3wMaSKm 开发板交流群 641395230 全志A64设备树结构体 #inc ...

  10. github-上传自己的项目到github仓库

    参考链接: https://blog.csdn.net/m0_37725003/article/details/80904824 https://www.cnblogs.com/cxk1995/p/5 ...