java比较器comparator使用示例分享

代码如下:

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

public class ComparatorTest implements Comparator<stuEntity> {

/**
     * @param args
     */
    public static void main(String[] args) {
        List<stuEntity> list = new ArrayList<stuEntity>();
        stuEntity stud1=new stuEntity();
        stud1.setAge(10);
        stud1.setName("abc");
        stuEntity stud2=new stuEntity();
        stud2.setAge(10);
        stud2.setName("bdc");
        stuEntity stud3=new stuEntity();
        stud3.setAge(5);
        stud3.setName("bdd");
        stuEntity stud4=new stuEntity();
        stud4.setAge(30);
        stud4.setName("aad");

list.add(stud1);
        list.add(stud2);
        list.add(stud3);
        list.add(stud4);

Collections.sort(list, new ComparatorTest());

for(stuEntity stud:list){
            System.out.println(stud.getAge()+":"+stud.getName());
        }
    }
/**
 *
 */
    @Override
    public int compare(stuEntity stud1, stuEntity stud2) {
        //根据姓名排序
        int maxname=stud1.getName().compareTo(stud2.getName());
        if(maxname!=0)
            return maxname;
        //根据年龄排序
        int maxage=stud1.getAge()-stud2.getAge();
        //if(maxage!=0)
            return maxage;
    }
}

输出:


代码如下:

30:aad
10:abc
10:bdc
5:bdd

java的比较器很有用,实现Comparator接口的compare()这个回调方法来制定排序规则,然后调用Collections.sort(list, new ComparatorTest());就可以将List进行排序,很方便

使用时要注意compare()方法中的return的先后顺序,优先的排序规则要写在前面

实体类:

代码如下:

/**
 * 学生实体类
 *
 */
public class stuEntity {
    private int studentId;// 学号
    private String name;
    private int age;
    private String sex;// 性别
    private int roomNumber;// 房间号
    private String degree;//学位
    private int grade;//年级
    private String deviceNumber;// 设备号
    private int groupNumber;// 所属的小组
    private int javaScore;// java成绩
    private int netScore;// NET成绩
    public String getDegree() {
        return degree;
    }

public void setDegree(String degree) {
        this.degree = degree;
    }

public int getGrade() {
        return grade;
    }

public void setGrade(int grade) {
        this.grade = grade;
    }

/**
     * 初始化有参构造函数
     *
     * @param id
     * @param name
     * @param age
     * @param sex
     * @param roomNumber
     * @param deviceNumber
     * @param groupNumber
     * @param javaScore
     * @param netScore
     */
    public stuEntity(String name, int age, String sex, int roomNumber,
            String deviceNumber, int groupNumber, int javaScore, int netScore) {
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.roomNumber = roomNumber;
        this.deviceNumber = deviceNumber;
        this.groupNumber = groupNumber;
        this.javaScore = javaScore;
        this.netScore = netScore;
    }

/**
     * 无参构造函数
     */
    public stuEntity() {

}

public int getJavaScore() {
        return javaScore;
    }

public void setJavaScore(int javaScore) {
        this.javaScore = javaScore;
    }

public int getNetScore() {
        return netScore;
    }

public void setNetScore(int netScore) {
        this.netScore = netScore;
    }

public int getStudentId() {
        return studentId;
    }

public void setStudentId(int studentId) {
        this.studentId = studentId;
    }

public String getName() {
        return name;
    }

public void setName(String name) {
        this.name = name;
    }

public int getAge() {
        return age;
    }

public void setAge(int age) {
        this.age = age;
    }

public String getSex() {
        return sex;
    }

public void setSex(String sex) {
        this.sex = sex;
    }

public int getRoomNumber() {
        return roomNumber;
    }

public void setRoomNumber(int roomNumber) {
        this.roomNumber = roomNumber;
    }

public String getDeviceNumber() {
        return deviceNumber;
    }

public void setDeviceNumber(String deviceNumber) {
        this.deviceNumber = deviceNumber;
    }

public int getGroupNumber() {
        return groupNumber;
    }

public void setGroupNumber(int groupNumber) {
        this.groupNumber = groupNumber;
    }
}

(0)

相关推荐

  • Java中自然排序和比较器排序详解

    前言 当指执行插入排序.希尔排序.归并排序等算法时,比较两个对象"大小"的比较操作.我们很容易理解整型的 i>j 这样的比较方式,但当我们对多个对象进行排序时,如何比较两个对象的"大小"呢?这样的比较 stu1 > stu2 显然是不可能通过编译的.为了解决如何比较两个对象大小的问题,JDK提供了两个接口 java.lang.Comparable 和 java.util.Comparator . 一.自然排序:java.lang.Comparable C

  • java比较器Comparable接口与Comaprator接口的深入分析

    java的比较器有两类,分别是Comparable接口和Comparator接口.在为对象数组进行排序时,比较器的作用非常明显,首先来讲解Comparable接口.让需要进行排序的对象实现Comparable接口,重写其中的compareTo(T o)方法,在其中定义排序规则,那么就可以直接调用java.util.Arrays.sort()来排序对象数组,实例如下: 复制代码 代码如下: class Student implements Comparable<Student>{    priv

  • 浅谈Java中几种常见的比较器的实现方法

    在Java中经常会涉及到对象数组的排序问题,那么就涉及到对象之间的比较问题. 通常对象之间的比较可以从两个方面去看: 第一个方面:对象的地址是否一样,也就是是否引用自同一个对象.这种方式可以直接使用"=="来完成. 第二个方面:以对象的某一个属性的角度去比较. 从最新的JDK8而言,有三种实现对象比较的方法: 一.覆写Object类的equals()方法: 二.继承Comparable接口,并实现compareTo()方法: 三.定义一个单独的对象比较器,继承自Comparator接口

  • 对比Java中的Comparable排序接口和Comparator比较器接口

    Comparable Comparable 是排序接口. 若一个类实现了Comparable接口,就意味着"该类支持排序". 即然实现Comparable接口的类支持排序,假设现在存在"实现Comparable接口的类的对象的List列表(或数组)",则该List列表(或数组)可以通过 Collections.sort(或 Arrays.sort)进行排序. 此外,"实现Comparable接口的类的对象"可以用作"有序映射(如Tree

  • java比较器comparator使用示例分享

    复制代码 代码如下: import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List; public class ComparatorTest implements Comparator<stuEntity> { /**     * @param args     */    public static void main(String[] arg

  • java线性表排序示例分享

    大家可以先看一下这个静态方法public static <T> void sort(List<T> list, Comparator<? super T> c) 1.先定义一个模型: 复制代码 代码如下: package model; /** * User.java *  * @author 梁WP 2014年3月3日 */public class User{    private String userName;    private int userAge; pub

  • java的arrays数组排序示例分享

    Java API对Arrays类的说明是:此类包含用来操作数组(比如排序和搜索)的各种方法. 1.对基本数据类型的数组的排序 说明: (1)Arrays类中的sort()使用的是"经过调优的快速排序法"; (2)比如int[],double[],char[]等基数据类型的数组,Arrays类之只是提供了默认的升序排列,没有提供相应的降序排列方法. (3)要对基础类型的数组进行降序排序,需要将这些数组转化为对应的封装类数组,如Integer[],Double[],Character[]等

  • java反射机制实战示例分享

    首先,我们来认识几个类. Class(java.lang.Class) Class对象是一个特殊对象,每一个类都有一个Class对象,用来创建该类的"常规"对象.可以通过对象的getClass()方法获取. 比如我们运行这一行代码: 复制代码 代码如下: System.out.println("测试".getClass().toString()); 得到的结果就是: 复制代码 代码如下: class java.lang.String Field(java.lang.

  • Java操作MongoDB数据库示例分享

    MongoDB是一个文档型数据库,是NOSQL家族中最重要的成员之一,以下代码封装了MongoDB的基本操作. MongoDBConfig.java package com.posoftframework.mongodb; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Enumeration; import java.util.HashMap; i

  • java生成随机数(字符串)示例分享

    用来生成简单的随机java生成随机数,大小+数字.没特符 复制代码 代码如下: package passwords;import java.util.Random;public class pwdGen { private Random rdseed=new Random(); /**  *@param  *length  password length;  *@param  *letters  boolean non-capital letters combination control; 

  • java连接orcale数据库示例分享

    database.properties 复制代码 代码如下: jdbc.driver_class=oracle.jdbc.driver.OracleDriverjdbc.connection.url=jdbc:oracle:thin:@localhost:1521:orcljdbc.connection.username=scottjdbc.connection.password=tiger ConfigManager.java 复制代码 代码如下: import java.io.IOExcep

  • java正则表达式解析html示例分享

    复制代码 代码如下: package work; import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.regex.Matcher;import java.util.regex.Pattern; import org.apache.commons.httpclient.DefaultH

  • java读取csv文件示例分享(java解析csv文件)

    复制代码 代码如下: import java.io.*;import java.util.*;public class HandleCsv {public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(   new InputStreamReader(    new FileInputStream("test.csv")   )); String li

  • java实现sunday算法示例分享

    字符串匹配查找算法中,最著名的两个是KMP算法(Knuth-Morris-Pratt)和BM算法(Boyer-Moore).两个算法在最坏情况下均具有线性的查找时间.但是在实用上,KMP算法并不比最简单的C库函数strstr()快多少,而BM算法则往往比KMP算法快上3-5倍(未亲身实践).但是BM算法还不是最快的算法,这里介绍一种比BM算法更快一些的查找算法Sunday算法. Sunday算法的思想和BM算法中的坏字符思想非常类似.差别只是在于Sunday算法在匹配失败之后,是取目标串中当前和

随机推荐