首页 > 技术文章 > Java 里Collections的min和max方法

ccxyyds 2019-09-27 17:37 原文

方法一

此方法需要传入一个实现了Comparable接口的对象类的集合

创建实现了Comparable的对象类

public class Student1 implements Comparable<Student1> {
 
    private String name;
    private int age;
 
    public Student1() {
    }
 
    public Student1(String name, int age) {
        this.name = name;
        this.age = age;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public Integer getAge() {
        return age;
    }
 
    public void setAge(Integer age) {
        this.age = age;
    }
 
    @Override
    public int compareTo(Student1 s) {
        int num = this.age - s.age;
        int num1 = (num == 0 ? this.name.compareTo(s.name) : num);
        return num1;
    }
}

调用

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
 
public class Student1Test {
    public static void main(String[] args) {
        List<Student1> list1 = new ArrayList<Student1>();
        list1.add(new Student1("林青霞", 27));
        list1.add(new Student1("风清扬", 30));
        list1.add(new Student1("刘晓曲", 28));
        list1.add(new Student1("武鑫", 29));
        list1.add(new Student1("林青霞", 27));
 
        Student1 min=Collections.min(list1);
        System.out.println(min.getName()+"---"+min.getAge());
        Student1 max=Collections.max(list1);
        System.out.println(max.getName()+"---"+max.getAge());
    }
}

方法二

此方法传入一个对象类的集合,以及一个比较器
根据比较器定义的规则来对对象类的集合做大小比较

创建对象类

public class Student2 {
 
    private String name;
    private int age;
 
    public Student2() {
    }
 
    public Student2(String name, int age) {
        this.name = name;
        this.age = age;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public Integer getAge() {
        return age;
    }
 
    public void setAge(Integer age) {
        this.age = age;
    }
}

调用

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
 
public class Student2Test {
    public static void main(String[] args) {
        List<Student2> list2 = new ArrayList<Student2>();
        list2.add(new Student2("林青霞", 27));
        list2.add(new Student2("风清扬", 30));
        list2.add(new Student2("刘晓曲", 28));
        list2.add(new Student2("武鑫", 29));
        list2.add(new Student2("林青霞", 27));
      
        Student2 min=Collections.min(list2,new MyComparator());
        System.out.println(min.getName()+"---"+min.getAge());
        Student2 max=Collections.max(list2,new MyComparator());
        System.out.println(max.getName()+"---"+max.getAge());
    }
}
 
class MyComparator implements Comparator<Student2> {
    @Override
    public int compare(Student2 s1, Student2 s2) {
        int num = s1.getAge() - s2.getAge();
        int num1 = (num == 0 ? s1.getName().compareTo(s2.getName()) : num);
        return num1;
    }
}

本文转载自:https://blog.csdn.net/lei2879223426/article/details/77430206

推荐阅读