常用对象集合自定义排序

第一种方法可以认为是Java提供的自动排序的方法,而你需要有独特的排序时就可以用第二种方法,传一个comparator过去,这个comparator正是你要自定义排序的关键点,你可以实现Comparable接口,并且实现compareTo方法,在compareTo里面写你自己需要的排序方法,并且List和Vector、set、map都可以用这种方式实现自定义排序,下面我就举一个map自定义排序的方法,其他的都基本一致


package com.hollycrm.heqf;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

public class MapSort {
	public static void main(String[] args){  
        Map<String, Player> map = new HashMap<String, Player>();  
        Player p1 = new Player("John", 1000);  
        Player p2 = new Player("Ben", 3000);  
        Player p3 = new Player("Jack", 2000);  
        map.put("John",p1);  
        map.put("Ben",p2);  
        map.put("Jack",p3);  
        //将Map里面的所以元素取出来先变成一个set,然后将这个set装到一个list里面  
        List<Map.Entry<String, Player>> list = new ArrayList<Map.Entry<String, Player>>(map.entrySet());  
        //定义一个comparator  
        Comparator<Map.Entry<String, Player>> comparator = new Comparator<Map.Entry<String, Player>>(){  
                 @Override  
                 public int compare(Entry<String, Player> p1, Entry<String, Player> p2){  
                       //之所以使用减号,是想要按照分数从高到低来排列  
                       return -(p1.getValue().score - p2.getValue().score);  
                  }  
        };
        Collections.sort(list, comparator);  
        for(Map.Entry<String, Player> entry:list){  
                System.out.println(entry.getValue().name + ":" + entry.getValue().score);  
         }  
   }  
}



package com.hollycrm.heqf;

public class Player {
	String name;  
    int score;   
    public Player(String name, int score){  
        this.name = name;  
        this.score = score;    
    }    
}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值