Java的比较器

package com.kk.Collection;

import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;

public class CompareTest {    public static void main(String[] args) {        List<Student> list=new ArrayList<Student>(10);        list.add(new Student(1,"jj"));        list.add(new Student(0,"ww"));        list.add(new Student(0,"kk"));        list.add(new Student(2,"ll"));        Collections.sort(list); //内部比较器:要排序的对象实现Comparable接口,可以对自身进行比较        System.out.println(list);

        List<Teacher> t=new ArrayList<Teacher>(10);        t.add(new Teacher(1,12));        t.add(new Teacher(0,13));        t.add(new Teacher(0,14));        t.add(new Teacher(2,15));        Collections.sort(t,new StudentComparator()); //外部比较器:通过实现Comparator接口        System.out.println(t);    }}

class Student implements Comparable {    int num;

    String name;

    public Student(int num, String name) {        this.num = num;        this.name = name;    }

    @Override    public String toString() {        return "\r\tnum:"+num+" name:"+name+"\r";    }

    public int compareTo(Object o) {        Student tmp=(Student) o;        int result=tmp.num>num?1:(tmp.num==num?0:-1);        if (result==0) {            result=tmp.name.indexOf(0)>name.indexOf(0)?1:-1;        }        return result;    }}

class Teacher{    int num;

    double salary;

    public Teacher(int num, double salary) {        this.num = num;        this.salary = salary;    }

    @Override    public String toString() {        return "\r\tnum:"+num+" salary:"+salary+"\r";    }    }

class StudentComparator implements Comparator{

    public int compare(Object o1, Object o2) {        Teacher t1=(Teacher) o1;        Teacher t2=(Teacher) o2;        int result=t1.num>t2.num?1:(t1.num==t2.num?0:-1);        return result=result==0?(t1.salary<t2.salary?1:-1):result;    }

}

Java的比较器,布布扣,bubuko.com

时间: 2024-10-19 13:48:55

Java的比较器的相关文章

java对象比较器和克隆

一.比较器Comparable和Comparator 上一篇博客介绍了工具类Arrays工具类 .我们可以对基本类型的数组调用Arrays.sort()函数来进行数组的排序.排序操作在日常开发中经常要使用到.那么String类和自定义类能不能使用Arrays.sort()来进行排序呢.下面我们来试试,如下: Java代码 publicclassMystring { publicstaticvoidmain(String[] args) { String []a={"早上","

Java对象比较器对泛型List进行排序-Demo

针对形如:字段1 字段2 字段3 字段n 1 hello 26 7891 world 89 5562 what 55 4562 the 85 452 fuck 55 995 haha 98 455 以上类型的查询数据结果,需要对 字段3 进行求和分组(在SQL查询无法一次性完成的情况下,通常采用Java分组排序),大概思路如下: 1.在Bean中添加相关的分组标记字段,对求和或者其它统计的结果进行插入分组标记,下面demo中为bigIdOrder标记 2.对完成标记的List进行标记的补全 3.

java之比较器

java中的比较器有两种: 1.实体类实现Comparable接口,并实现其中的compareTo方法 2.在外部定义实现Comparator接口的比较器类,并实现其中的compare方法 Comparable接口 Person类源码: package test; public class Person implements Comparable<Person> { private Integer id; private String name; private Integer age; pu

【java对象比较器和克隆】

一.比较器Comparable和Comparator 上一篇博客介绍了工具类Arrays工具类.我们可以对基本类型的数组调用Arrays.sort()函数来进行数组的排序.排序操作在日常开发中经常要使用到.那么String类和自定义类能不能使用Arrays.sort()来进行排序呢.下面我们来试试,如下: public class Mystring { public static void main(String[] args) { String []a={"早上","中午&

java:Comparator比较器

/*Comparator是java.util包里的一个接口,使用时应该实现导入相应的包, *再写一个实现了Comparator接口的类,并复写int compare(Object o)方法, *写出你的判断语句(例如:以下代码是按照年龄的递增顺序排序,年龄相同则按照工资的数目递增排序) *把这个类添加到Arrays.sort()或Collections.sort()中(例如:定义一个list集合,用来存放对象,可以这样写:Collections.sort(list,new 实现类():)) */

Java——类比较器

1.Product类 1 public class Product 2 { 3 private int pid; 4 private String name; 5 private double price; 6 7 public Product() 8 { 9 // TODO Auto-generated constructor stub 10 } 11 12 public Product(int pid, String name, double price) 13 { 14 this.pid

我爱java系列---【java对象比较器,用于记录修改操作时修改的具体详情】

对象比较器 public class LogUtils<T> { /** * 对象比较器 * 比较结果eg:1.字段名称loginName,旧值:liu,新值:gu;2.字段名称address,旧值:hunan,新值:neimenggu * @param oldBean * @param newBean * @return */ public String compareObject(Object oldBean, Object newBean) { String str = "&q

java: Comparable比较器,定义二叉操作类

//定义二叉操作类 class BinaryTree{ class Node{ private Node left; //左指数 private Node right; //右指数 private Comparable data; public Node(Comparable<?> data) { this.data = data; } //二叉数据比较,大的放在右边,小的放在左边 public void addNode(Node newNode) { //放在左边 if( newNode.d

JavaSE入门学习39:Java集合框架之比较器

排序的算法是我们最常用的算法,初学程序,每个人都尝试过排序.但只是局限于简单的排序. 如将下列数字进行排序 1,3,5,8,3,6 于是我们得出结果 1,3,3,5,6,8 将下列字母(字符)进行排序 a,i,e,f,w,s 于是我们得出结果 a,e,f,i,s,w 但是我们遇到的情况就不是如此简单了.如给公司里的商品进行排序,我们很轻易的想到按照商品的名称排序不 就完了,而且简单明了.但现实并如我们相信般简单.同一商品名称可以有不同的批次,进货时间,可能还会有单价 的不同.显然只根据商品名称排