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;
}
} }

Comparator与Comparable,自定义排序和类比较器,TreeSet对象排序的更多相关文章
- java之Comparator与Comparable
转自:http://blog.csdn.net/zhangerqing 当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定 ...
- java的Comparator和Comparable
java的Comparator和Comparable 当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序. ...
- Java集合中对象排序
集合中的对象排序需求还是比較常见的.当然我们能够重写equals方法,循环比較:同一时候Java为我们提供了更易使用的APIs.当须要排序的集合或数组不是单纯的数字型时,通常能够使用Comparato ...
- 黑马程序员——【Java基础】——泛型、Utilities工具类、其他对象API
---------- android培训.java培训.期待与您交流! ---------- 一.泛型 (一)泛型概述 1.泛型:JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制 ...
- java集合框架之比较器Comparator、Comparable
参考http://how2j.cn/k/collection/collection-comparator-comparable/693.html Comparator 假设Hero有三个属性 name ...
- Java TreeSet集合排序 && 定义一个类实现Comparator接口,覆盖compare方法 && 按照字符串长度排序
package TreeSetTest; import java.util.Iterator; import java.util.TreeSet; import javax.management.Ru ...
- 集合排序 Comparator和Comparable的使用区别
Java 排序 Compare Comparator接口 Comparable接口 区别 在Java中使用集合来存储数据时非常常见的,集合排序功能也是常用功能之一.下面看一下如何进行集合排序,常用的 ...
- Java://Comparator、Comparable的用法(按照要求将set集合的数据进行排序输出):
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; //comparator. ...
- 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 ...
随机推荐
- s21day22 python笔记
s21day22 python笔记 一.内容回顾及补充 模块补充 importlib.import_module:通过字符串的形式导入模块 #示例一: import importlib # 用字符串的 ...
- 函数模板前template语句的位置
先贴个例子看看: #include<iostream> using namespace std; template <> void print() { ; i < siz ...
- Floyd(求每2个点之间的最短路)
稍微改变即可求传递闭包,即关心两点之间是否有同路: for(int i=0;i<n;i++) for(int j=0;j<n;j++){ if(i==j) d[i][i]=0; else ...
- Java中如何拆分字符串为字符数组
题目:输入一串字符,由(){}[]组成,判断是否所有的括号都是闭括号,是的返回TRUE,不是返回FALSE. /*输入字符串,拆解为字符数组 * 用函数s.charAt(i)来完成 * * */imp ...
- .net core+Spring Cloud学习之路 一
文章开头唠叨两句. 2019年了,而自己参加工作也两年有余了,用一个词来概括这两年多的生活,就是:“碌碌无为”. 也不能说一点收获都没有,但是很少.2019来了,我立志要打破现状,改变自己,突破自我. ...
- P2257 莫比乌斯+整除分块
#include<bits/stdc++.h> #define ll long long using namespace std; ; int vis[maxn]; int mu[maxn ...
- python-算法基础
1.时间复杂度和空间复杂度 2.查找算法 2.1 二分查询法 2.1.1 非递归代码 def erfen(data,target): low = 0 high = len(data) - 1 whil ...
- [摘译] IK: 操纵关节式物体的反向动力学和几何约束
原文: INVERSE KINEMATICS AND GEOMETRIC CONSTRAINTS FOR ARTICULATED FIGURE MANIPULATION http://graphics ...
- Python爬虫初学者学习笔记(带注释)
一,安装编程工具并进入编程界面 首先去https://www.continuum.io/downloads/网站下载Anaconda工具并安装;打开cmd,输入jupyter notebook并回车( ...
- virtualenvwrappers pipreqs 踩坑
virtualenvwrappers 1.安装 pip install virtualenvwrapper 在~/.bashrc 中写入 export WORKON_HOME=~/.virtualen ...