`
jackroomage
  • 浏览: 1199401 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

先按年龄排序,要是年龄相等的话,就按名字的顺序排序

 
阅读更多

//先按年龄排序,要是年龄相等的话,就按名字的顺序排序;


public class User implements Comparable<User>{
 
    private String name;
    private int age;
   
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }

 
 public int compareTo(User o) {
 
  if(this.getAge()-(o.getAge())!=0){
   return this.getAge()-(o.getAge());
  }else{
   return this.getName().compareTo(o.getName());
  }
 }

}

 

 

 

 

//测试类

 

 

 

public class Test {
  public static void main(String[] args){
   User user1=new User();
   user1.setName("e");
   user1.setAge(23);
  
   User user2=new User();
   user2.setName("d");
   user2.setAge(3);
  
   User user3=new User();
   user3.setName("b");
   user3.setAge(6);
  
   List<User> list=new ArrayList<User>();
   list.add(user1);
   list.add(user2);
   list.add(user3);

 //主要要注意pojo实现(implements )了Comparable<T>接口
 //所以采用Collections.sort(list);

 

   Collections.sort(list);
  
   for(User u:list){
    System.out.println(u.getAge()+"/"+u.getName());
   }
  }
 }

 

 

 

 

 

&&&&&&&&&&&&&&&&&&&&&& 上面和下面实现的功能是一样的注意观察不同点

 

 

 

pojo

 

public class User implements Comparator<User> {
 
    private String name;
    private int age;
   
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 
 public int compare(User o1, User o2) {
 
      if(o1.getAge()-(o2.getAge())!=0){
       return o1.getAge()-(o2.getAge());
    }else{
       return  o1.getName().compareTo(o2.getName());
     }
 }
}

 

 

 

测试类

 

 

 

 

public class Test {
  public static void main(String[] args){
   User u1=new User();
   u1.setAge(13);
   u1.setName("d");
  
   User u2=new User();
   u2.setAge(6);
   u2.setName("h");
  
   User u3=new User();
   u3.setAge(3);
   u3.setName("a");
  
   User u4=new User();
   u4.setAge(23);
   u4.setName("c");
   List<User> al=new ArrayList<User>();
   al.add(u1);
   al.add(u2);
   al.add(u3);
   al.add(u4);

 //主要观察里面的对象new User();和上面的实现有什么不同

 

 Collections.sort(al,new User());
  
   Iterator ite=al.iterator();
   while(ite.hasNext()){
    User user=(User)ite.next();
    System.out.print(user.getAge()+"/");
    System.out.println(user.getName());
   }
  }
 }

 

 

 

类似功能另一篇博客总结在线

分享到:
评论

相关推荐

    C++ 实现带监视哨的顺序查找算法

    变量的赋值就相当于哨兵,当排序数列中出现与哨兵相等的值或有某种既定关系出现时,就做一种操作,比如说停止排序,或进行下一趟排序。 举例: 顺序检索的算法描述如下 int Search_Sequen(SSTable ST,KeyType key...

    学生成绩管理系统课程设计报告(1).doc

    (2)功能分析 "学生成绩管理系统"包括九个模块:输入学生资料,输出学生资料,学生姓名按顺序排 列,添加学生资料,按姓名查找,删除该学生资料,查找并显示学生资料,按姓名查找 ,修改该学生资料,从文件中读入...

    javascript文档

    在“字母顺序的关键字列表”中,可以找到按字母顺序列出的所有 JScript 语言的主题。如果只需要查看某个主题(例如对象),则有对该主题进行详细说明的章节可供查阅。 如何操作呢?单击左边任意一个标题,即可显示...

    JScript 语言参考

    在“字母顺序的关键字列表”中,可以找到按字母顺序列出的所有 JScript 语言的主题。如果只需要查看某个主题(例如对象),则有对该主题进行详细说明的章节可供查阅。 如何操作呢?单击左边任意一个标题,即可显示...

    微软JavaScript手册

    在“字母顺序的关键字列表”中,可以找到按字母顺序列出的所有 JScript 语言的主题。如果只需要查看某个主题(例如对象),则有对该主题进行详细说明的章节可供查阅。 如何操作呢?单击左边任意一个标题,即可显示...

    上海电机学院C语言实训答案

    那么,现在就开始吧,先编写第1个程序,然后试着在第1个程序的基础上编写第2个程序,…… 程序1 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则计算机给出提示“Right!”,否则提示“Wrong!”,并...

    十天学会ASP.net--我认为ASP.NET比ASP难很多,希望大家做好准备

    以前说到BUTTON控件CausesValidation=true/false来设置按钮提交的表单是不是被检验也就是这里的几个检验控件,如果CausesValidation=true的话按下按钮就会首先检测是不是都通过了检验控件的检验。 下面再说两点: ...

    java 面试题 总结

    Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 10、&和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 11、HashMap...

    超级有影响力霸气的Java面试题大全文档

    Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 13、&和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 14、...

    《你必须知道的495个C语言问题》

    不管按什么顺序计算,难道不该是56吗? 33  3.3 对于代码int i=3; i=i++; 不同编译器给出不同的i值,有的为3,有的为4,哪个是正确的? 34  *3.4 有这样一个巧妙的表达式:a^= b^= a^= b; 它不需要临时变量就...

    经典SQL语句大全

    3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段 alter table tablename --添加一个自增列 add...

    数据库操作语句大全(sql)

    3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段 alter table tablename --添加一个自增列 ...

    sql经典语句一部分

    3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段 alter table tablename --添加一个自增列 add...

    达内 coreJava 习题答案

    //定义输入的年份名字为“year” Scanner scanner = new Scanner(System.in); year = scanner.nextInt(); if (year||year&gt;3000){ System.out.println("年份有误,程序退出!"); System.exit(0); } if ((year...

    c++ 面试题 总结

    我先说个大概,希望能够抛砖引玉吧 当程序运行时需要从内存中读出这段程序的代码。代码的位置必须在物理内存中才能被运行,由于现在的操作系统中有非常多的程序运行着,内存中不能够完全放下,所以引出了虚拟内存的...

    你必须知道的495个C语言问题

    不管按什么顺序计算,难道不该是56吗? 3.3 对于代码inti=3;i=i++;不同编译器给出不同的i值,有的为3,有的为4,哪个是正确的? *3.4 有这样一个巧妙的表达式:a^=b^=a^=b;它不需要临时变量就可以交换a和b的值。...

    freemarker总结

    sort_by(name) 表示所有的user按user.name进行排序 hashes内置方法 hash?keys 返回hash里的所有keys, 返回结果类型sequence hash?values 返回hash里的所有value, 返回结果类型sequence 模板 使用FTL(freeMarker...

Global site tag (gtag.js) - Google Analytics