常用对象集合自定义排序

来源:互联网 发布:淘宝的评价管理在哪 编辑:程序博客网 时间:2024/06/08 06:27

第一种方法可以认为是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
原创粉丝点击