Comparator用法

举报
小傅哥 发表于 2021/04/21 23:22:49 2021/04/21
【摘要】 Comparator  不同于 Comparable java.util.Comparator DEMO ---------------------------------------- Lake湖类 class Lake {     private String name = "淡水湖";   &nbsp...

Comparator  不同于 Comparable

java.util.Comparator

DEMO

----------------------------------------

Lake湖类

class Lake {
    private String name = "淡水湖";
    private String englishName = "lake";
    private int area = 1;
   
    public Lake(String n, String e, int a) {
        setName(n);
        setEnglishName(e);
        setArea(a);
    }
   
    public String getName() {
        return name;
    }
    public boolean setName(String n) {
        if(n != null && n.length() > 0) {
            name = n;
            return true;
        }
        return false;
    }
    public String getEnglishName() {
        return englishName;
    }
    public boolean setEnglishName(String e) {
        if(e != null && e.length() > 0) {
            englishName = e;
            return true;
        }
        return false;
    }
    public int getArea() {
        return area;
    }
    public boolean setArea(int a) {
        if(a >= 1 && a <= 10000) {
            area = a;
            return true;
        }
        return false;
    }
   
    public String toString() {
        return name + " (" + englishName + ", " + area + "平方公里)";
    }
}
-----------------------

按大小排序

import java.util.Comparator;

class AreaComparator implements Comparator<Lake> {
    public int compare(Lake k1, Lake k2) {
        return k1.getArea() - k2.getArea();
    }
}

-----------------------

按名字排序

import java.util.Comparator;

class NameComparator implements Comparator<Lake> {
    public int compare(Lake k1, Lake k2) {
        return k1.getEnglishName().compareTo(k2.getEnglishName());
    }
}

-----------------------

测试类

import java.util.*;

class FiveLakes {
    public static void main(String[] args) {
        ArrayList<Lake> lakes = new ArrayList<Lake>();
       
        lakes.add(new Lake("洞庭湖", "Dongting Lake", 2820));
        lakes.add(new Lake("太湖", "Lake Thai", 2250));
        lakes.add(new Lake("巢湖", "Chao Lake", 775));
        lakes.add(new Lake("鄱阳湖", "Po-yang Lake", 3914));
        lakes.add(new Lake("洪泽湖", "Hung-tse Lake", 1577));
       
        Collections.sort(lakes, new NameComparator());
        System.out.println("我国的五大淡水湖, 按\"英文名称\"[升序]排列如下:");
        for(int i = 0; i < 5; i++) {
            System.out.println(i+1 + ". " + lakes.get(i));
        }
       
        System.out.println();
        Collections.sort(lakes, new AreaComparator());
        Collections.reverse(lakes);
        System.out.println("我国的五大淡水湖, 按湖水面积[降序]排列如下:");
        for(int i = 0; i < 5; i++) {
            System.out.println(i+1 + ". " + lakes.get(i));
        }
    }
}

 

文章来源: bugstack.blog.csdn.net,作者:Yao__Shun__Yu,版权归原作者所有,如需转载,请联系作者。

原文链接:bugstack.blog.csdn.net/article/details/7856136

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。