黑马程序员技术交流社区

标题: 为什么我用ArrayList 进行排序 运行没有结果呢 [打印本页]

作者: ninjaes    时间: 2015-4-26 09:58
标题: 为什么我用ArrayList 进行排序 运行没有结果呢
本帖最后由 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;
          }
  }

  比较器的方法覆盖没觉得有问题呀 求大神帮我看看 到底是哪里出了问题  
作者: adalvik    时间: 2015-4-26 10:05
啥叫没结果啊 是不是你运行错了。代码没问题 我运行了下
作者: 大西洋    时间: 2015-4-26 10:28
您的意思是不是没看到年龄??这样改一下就打印年龄了,我运行了过是可以排序的

  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
复制代码

作者: ninjaes    时间: 2015-4-26 10:35
adalvik 发表于 2015-4-26 10:05
啥叫没结果啊 是不是你运行错了。代码没问题 我运行了下

就是点了运行  啥都没有  Console 栏里空白  

作者: ninjaes    时间: 2015-4-26 10:47
大西洋 发表于 2015-4-26 10:28
您的意思是不是没看到年龄??这样改一下就打印年龄了,我运行了过是可以排序的

是不是我打印的时候  必须要调用getAge 方法才行
还有就是  为什么 我使用compareTo 方法不行
作者: 大西洋    时间: 2015-4-26 22:55
ninjaes 发表于 2015-4-26 10:47
是不是我打印的时候  必须要调用getAge 方法才行
还有就是  为什么 我使用compareTo 方法不行  ...

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

恩 是运行了没结果
作者: ninjaes    时间: 2015-4-27 09:52
fanxia_2007 发表于 2015-4-26 23:09
楼主,重写一下toString方法,然后打印集合也可以的。

好 我试一试
作者: 李成强    时间: 2015-4-27 12:59
你是不是点了工具栏上的“运行”按钮,如果是则有可能你运行的不是当前的类,保险做法就是在当前类上右击-->Run as --> Java Application
作者: ninjaes    时间: 2015-4-28 08:37
李成强 发表于 2015-4-27 12:59
你是不是点了工具栏上的“运行”按钮,如果是则有可能你运行的不是当前的类,保险做法就是在当前类上右击-- ...

点了  就是console 没有显示 不过已经解决了  
作者: wnk77521    时间: 2015-4-28 18:07
恩恩 明白就好 一定是TOstring没有重写 造成的
作者: ninjaes    时间: 2015-4-28 19:29
wnk77521 发表于 2015-4-28 18:07
恩恩 明白就好 一定是TOstring没有重写 造成的

恩  输出语句有问题




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2