A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 ninjaes 于 2015-4-28 08:38 编辑

package com.itheima;
import java.util.*;


class test
{
  public static void main(String[] args)
  {
         List <User> al=new ArrayList<User>();
          al.add(new User("ll",31));
          al.add(new User("Soip",30));
          al.add(new User("ou",41));
          al.add(new User("oppu",21));
          al.add(new User("pou",11));
        Collections.sort(al,new Comparator<User>()
           {
                public int compare(User o1,User o2)
                {
                        return o1.getAge().compareTo(o2.getAge());
                }
           }
          );
        for(User u:al)
        {
                System.out.println(u.getName());
        }
  
  }         
}
class User
  {
          private String name;
          private Integer age;
            User(String name,int age)
          {
                  this.name=name;
                  this.age=age;
          }
        
         public String getName()
         {
                 return name;
         }
          public Integer getAge()
          {
                return age;
          }
          public void setName(String name)
          {
                  this.name=name;
          }
          public void setAge(Integer age)
          {
                  this.age=age;
          }
  }

  比较器的方法覆盖没觉得有问题呀 求大神帮我看看 到底是哪里出了问题  

12 个回复

倒序浏览
啥叫没结果啊 是不是你运行错了。代码没问题 我运行了下
回复 使用道具 举报
您的意思是不是没看到年龄??这样改一下就打印年龄了,我运行了过是可以排序的

  1.                 for (User u : al) {
  2.                         System.out.println(u.getName()+" "+u.getAge());
  3.                 }
复制代码


排序结果:
  1. pou 11
  2. oppu 21
  3. Soip 30
  4. ll 31
  5. ou 41
复制代码
回复 使用道具 举报
adalvik 发表于 2015-4-26 10:05
啥叫没结果啊 是不是你运行错了。代码没问题 我运行了下

就是点了运行  啥都没有  Console 栏里空白  
回复 使用道具 举报
大西洋 发表于 2015-4-26 10:28
您的意思是不是没看到年龄??这样改一下就打印年龄了,我运行了过是可以排序的

是不是我打印的时候  必须要调用getAge 方法才行
还有就是  为什么 我使用compareTo 方法不行
回复 使用道具 举报
ninjaes 发表于 2015-4-26 10:47
是不是我打印的时候  必须要调用getAge 方法才行
还有就是  为什么 我使用compareTo 方法不行  ...

compareTo() 只负责排序,不负责输出~ 所以Console是空白的~
需要在System.out.println();里面调用才可以打印出结果~ {:3_57:}
回复 使用道具 举报
楼主,重写一下toString方法,然后打印集合也可以的。
回复 使用道具 举报
adalvik 发表于 2015-4-26 10:05
啥叫没结果啊 是不是你运行错了。代码没问题 我运行了下

恩 是运行了没结果
回复 使用道具 举报
fanxia_2007 发表于 2015-4-26 23:09
楼主,重写一下toString方法,然后打印集合也可以的。

好 我试一试
回复 使用道具 举报
你是不是点了工具栏上的“运行”按钮,如果是则有可能你运行的不是当前的类,保险做法就是在当前类上右击-->Run as --> Java Application
回复 使用道具 举报
李成强 发表于 2015-4-27 12:59
你是不是点了工具栏上的“运行”按钮,如果是则有可能你运行的不是当前的类,保险做法就是在当前类上右击-- ...

点了  就是console 没有显示 不过已经解决了  
回复 使用道具 举报
恩恩 明白就好 一定是TOstring没有重写 造成的
回复 使用道具 举报
wnk77521 发表于 2015-4-28 18:07
恩恩 明白就好 一定是TOstring没有重写 造成的

恩  输出语句有问题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马