对象集合的属性排序 Compareable:重写 int compare(p1, p2)

本文介绍了一个使用Java实现的集合排序示例,通过定义Flight类并利用Collections.sort方法结合Comparator接口,实现了根据Flight对象的价格属性进行升序排序的功能。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;


class Flight{  //实体类
    
    private int price;  
    private String flyName; 
    
    public int getPrice() {  
        return price;  
    }  
  
    public void setPrice(int price) {  
        this.price = price;  
    } 
    
    public String getFlyName() {  
        return flyName;  
    }  
  
    public void setFlyName(String flyName) {  
        this.flyName = flyName;  
    }  
}  


public class rjmDataHandle {

public static void main(String args[]) { //存对象排序

List<Flight> list=new ArrayList<Flight>();


//对象赋值

Flight f1=new Flight();
f1.setPrice(500);
f1.setFlyName("A6");
Flight f2=new Flight();
f2.setPrice(700);
f2.setFlyName("B5");
Flight f3=new Flight();
f3.setPrice(300);
f3.setFlyName("Ca");
Flight f4=new Flight();
f4.setPrice(600);
f4.setFlyName("D4");
Flight f5=new Flight();
f5.setPrice(300);
f5.setFlyName("E3");

//集合赋值

list.add(f1);
list.add(f2);
list.add(f3);
list.add(f4);
list.add(f5);
 
Collections.sort(list, new Comparator<Flight>(){  
 
           /*  
            * Integer compare(Flight o1, Flight o2) 返回一个基本类型的整型,  
            * 返回负数表示:o1 价格小于o2价格,  
            * 返回0 表示:o1价格和o2价格相等,  
            * 返回正数表示:o1价格大于o2价格。  
            */  
@Override
public int compare(Flight o1, Flight o2) {    //重写 compare 并设置返回值是正负值或者是0

//按照价格的进行升序排列  
               if(o1.getPrice() > o2.getPrice()){  
                   return 1;  
               }  
               if(o1.getPrice() == o2.getPrice()){  
                   return 0;  
               }  
               return -1;  
}  
       }); 

//循环输出

for(int  i=0;i<list.size();i++){
System.out.println("名称:"+list.get(i).getFlyName()+"价格:"+list.get(i).getPrice());  
}
}
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值