Java中使用Comparator接口实现集合对象或数组对象的排序

package com.mxl.xiaoming;

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

class Week{
    private String week;
    private int integer;
    //无参构造函数
    public Week(){
        super();
    }
    public Week(String week,int integer){
        super();
        this.week = week;
        this.integer = integer;
    }
    public String getWeek(){
        return week;
    }
    public void setWeek(String week){
        this.week = week;
    }
    public int getInteger(){
        return integer;
    }
    public void setInteger(int integer){
        this.integer = integer;
    }
}

class WeekComparator implements Comparator<Week>{
    /*
     * 对Week类进行排序,按照integer进行排序。
     * 升序排列 :如果 w1小于w2,返回一个负数;如果w1大于w2,返回一个正数;如果相等,则返回 0;
     * 降序排列 :如果 w1小于w2,返回一个正数;如果w1大于w2,返回一个负数;如果相等,则返回 0;
     * @see 
     */
    @Override  //覆写Comparator接口中的,compare()方法。
    public int compare(Week w1,Week w2){
        if(w1.getInteger()>w2.getInteger()){
            return 1;
        }else if(w1.getInteger()<w2.getInteger()){
            return -1;
        }else{
            return 0;
        }
    }
}

public class Exercise{
    public static void main(String[] args) throws Exception{
        List<Week> weeks = new ArrayList<Week>();   //创建List集合对象  weeks
        weeks.add(new Week("星期二",2));
        weeks.add(new Week("星期五",5));
        weeks.add(new Week("星期四",4));
        weeks.add(new Week("星期一",1));
        weeks.add(new Week("星期六",6));
        weeks.add(new Week("星期日",7));
        weeks.add(new Week("星期三",3));
        WeekComparator wc = new WeekComparator();  
        Collections.sort(weeks,wc);                 //集合weeks按照 对象wc中的方式进行排序。
        Iterator<Week> itr = weeks.iterator();       
        while(itr.hasNext()){
            Week wk = (Week) itr.next();
            System.out.println(wk.getWeek()+"----> "+wk.getInteger());
        }
    }
}

运行结果:

135715_rKUS_2619512.png

转载于:https://my.oschina.net/flyxiaoming/blog/648113

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值