Java中Comparator比较器的使用

说几点需要注意的,提醒自己即可:
以下是单独定义一个比较器的类,实现了Comparator中的compare方法。(要在Main方法外面定义类噢)
一定是compare而不是Compare哦

package xixixi;
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        Student[] arr = new Student[n];
        for(int i=0;i<n;i++)
        {
            String name = in.next();
            int num = in.nextInt();
            arr[i] = new Student(name, num);
        }
    }
}

class Student{
    String name;
    int num;
    Student(String s,int n){
        name = s;
        num = n;
    }

    public String toString() {
        return name+"-"+num;
    }
}

 class NameComparator implements Comparator<Student>{
    public int compare(Student o1,Student o2)
    {
        if(o1.name.compareTo(o2.name)>0)
            return 1;
        else if(o1.name.compareTo(o2.name)<0)
            return -1;
        else
            return o1.name.compareTo(o2.name);
    }
}

原文地址:https://www.cnblogs.com/juzijuziju/p/12129060.html

时间: 2024-10-22 07:51:52

Java中Comparator比较器的使用的相关文章

Java中Comparator接口

Comparator位于java.util包下 public interface Comparator<T> 强行对某个对象 collection 进行整体排序 的比较函数.可以将 Comparator 传递给 sort 方法(如 Collections.sort 或 Arrays.sort),从而允许在排序顺序上实现精确控制.还可以使用 Comparator 来控制某些数据结构(如有序 set或有序映射)的顺序,或者为那些没有自然顺序的对象 collection 提供排序. 当且仅当对于一组

跟王老师学集合(十一)java中Comparator的用法

Java中Comparator的用法 主讲人:王少华  QQ群号:483773664 在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口以达到我们想要的目标. 接下来我们模拟下在集合对象中对日期属性进行排序 一.实体类 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 package chapter07_11; public class Person {     private int a

java中Comparator 和 Comparable的区别

1.Comparable的代码如下: public interface Comparable<T> { public int compareTo(T o); } 2.Comparator的代码如下 public interface Comparator<T> { int compare(T o1, T o2); boolean equals(Object obj); // jdk1.8 后的方法 default Comparator<T> reversed() { re

java中Comparator的用法 -- 实现集合和数组排序

在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口以达到我们想要的目标. 接下来我们模拟下在集合对象中对日期属性进行排序 一.实体类Step package com.ljq.entity; /** * */public class Step{ /** 时间 */ private String acceptTime = ""; /** 地点 */ private String acceptAddress = ""; public Ste

使用Java中Comparator接口实现自定义排序

一般情况下,自己动手写一个简单排序程序还是没有问题的,但是你能保证写出来的排序程序的时间复杂度吗?你能保证程序的正确性吗,鲁棒性呢,还有程序结构的清晰性,可维护性.......综上所述,学习一下排序接口来实现对复杂对象的排序还是很有必要的.Java中有两个用来实现排序的接口Comparator和Comparable接口,本人比较喜欢使用java的Comparator接口,在程序里实现Comparator接口里的compare(Object o1,Object o2)方法,然后在程序中通过调用Ar

JAVA中Comparator的使用

关于Collections中的sort方法的使用   在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口以达到我们想要的目标. 此排序被保证是稳定的:不会因调用 sort 方法而对相等的元素进行重新排序. 举个例子: 定义一个User类,内有name和score两个属性. 定义一个ArryList,其内部元素为User对象,如何按照User的score进行升序排序? //声明User类型 public class User { public String name

Java 中Comparator 的使用,实现集合排序

目标:实现对Person 对象的年龄,从小到大排序 1.实现排序 1 package com.app; 2 3 import java.util.ArrayList; 4 import java.util.Collections; 5 import java.util.Comparator; 6 import java.util.List; 7 8 public class A1 extends B{ 9 10 public static void main(String[] args) { 1

Java中Comparator接口和Comparable接口的使用

一般情况下在实现对对象元素的数组或集合进行排序的时候会用到Comparator和Comparable接口,通过在元素所在的类中实现这两个接口中的一个,然后对数组或集合调用Arrays.sort或者Collentions.sort方法即可实现对数组或集合的排序.就sort方法里面的参数来说,实现了不同的接口则传递的参数也不尽相同.对于实现了Comparator接口的类来说,sort方法需要接受的参数不仅包括数组或集合,还要包括实现了该接口的类对象:而对实现了Comparable接口的类来说,参数不

Java中Comparator进行对象排序

Java在8后引入了lambda表达式和流,使得排序方法有了变化 class User { int id; String name; public User(int id, String name) { this.id = id; this.name = name; } public int getId() { return id; } public String getName() { return name; } @Override public String toString() { re