java的map集合排序,value是个对象,要按照对象中的某个属性排序,怎么排啊?

 我来答
yujmh
2013-11-16 · TA获得超过772个赞
知道小有建树答主
回答量:427
采纳率:33%
帮助的人:322万
展开全部
import java.util.Comparator;
import java.util.Map;
import java.util.Random;
import java.util.TreeMap;
import java.util.Map.Entry;

public class TestSort {
 public static void main(String[] args) {
  //必须使用TreeMap(HashMap实现不了此功能)
  //实例化Dog,需要使用这个对象作为TreeMap构造方法参数
  Dog dog=new Dog();
  Map<Object,Object> map=new TreeMap(dog);
  //随机生成40个dog对象
  Random random=new Random();
  for(int i=0;i<40;i++){
   //年龄范围随机生成(1~100之间)
   dog=new Dog(random.nextInt(100)+1);
   map.put(dog, dog);
  }
  //以此输出年龄
  for(Entry<Object, Object> entry:map.entrySet()){
   dog=(Dog) entry.getValue();
   System.out.println(dog.getAge());
  }
 }
}
/**

 * 必须实现“Comparator”接口

 * 以age属性进行排序(当然也可以根据多个属性组合排序,此处不再演示)

 */
 class Dog implements Comparator<Dog>{
 private int age;
 public Dog(){
  
 }
 public Dog(int age){
  this.age=age;
 }
 /**
  * 按年龄升序
  */
 public int compare(Dog o1, Dog o2) {
  if(o1.age<o2.age){
   return -1;
  }else if(o1.age==o2.age){
   return 0;
  }else 
   return 1;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 
}

以上是代码部分,写的不好的地方请见谅!

追问
我头儿告诉我说,要把map集合放到list集合里,这样是怎么弄的啊?
还有如果dog中有好多属性,我怎么确定是以age来排的?
雪飞潇潇
推荐于2017-12-15 · TA获得超过6275个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:870万
展开全部

正确的答案来了

附件里有代码。包含了你的头的要求把map放到list中。

这两天,我也经常使用集合


追问
多谢啊,要是age一样,我再用name排怎么加?
追答
如果name要排序只需要在内部类中判断一下就好了啊

参考代码如下。你可以参考
if(o2.getValue().age!=o1.getValue().age){
return o2.getValue().age - o1.getValue().age;
}else{
//按第一个字符排序

return o1.getValue().name.charAt(0) - o2.getValue().name.charAt(0);
/ /或者按字符长度排序。你在这里指定返回的规则啊

//return o1.getValue().name.length() - o2.getValue().name.length();

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ffggfly
2013-11-16 · TA获得超过353个赞
知道小有建树答主
回答量:663
采纳率:0%
帮助的人:374万
展开全部
排序输出来吗?
更多追问追答
追问
是啊大神,怎么弄?
追答
你举个例子我给你代码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式