zoukankan      html  css  js  c++  java
  • Java 中Comparator 的使用,实现集合排序

    目标:实现对Person 对象的年龄,从小到大排序

    1、实现排序

     

     1 package com.app;
     2
     3 import java.util.ArrayList;
     4 import java.util.Collections;
     5 import java.util.Comparator;
     6 import java.util.List;
     7 
     8 public class A1 {
     9 
    10     public static void main(String[] args) {
    11         List<Person> list = getData() ;
    12         //排序
    13         Collections.sort( list , comparator );
    14         
    15         for (Person person : list) {
    16             System.out.println("person   " + person.getName() + "  " + person.getAge() );
    17         }
    18         
    19     }
    20 
    21     /**
    22      * 年龄按从小到大排序
    23      */
    24     static Comparator<Person> comparator = new Comparator<Person>() {
    25         @Override
    26         public int compare(Person p1 , Person p2 ) {
    27             if( p1.getAge() > p2.getAge() ){
    28               return 1 ;  //正数
    29             }else if ( p1.getAge() < p2.getAge()) {
    30                 return -1 ;  //负数
    31             }else {
    32                 return 0;  //相等为0
    33             }
    34         }
    35     };
    36 
    37     static private List<Person> getData() {
    38         List<Person> list = new ArrayList<>() ;
    39 
    40         Person p1 = new Person() ;
    41         p1.setAge( 10 ); 
    42         p1.setName( "p1" );
    43 
    44         Person p2 = new Person() ;
    45         p2.setAge( 30 ); 
    46         p2.setName( "p2" );
    47 
    48         Person p3 = new Person() ;
    49         p3.setAge( 20 ); 
    50         p3.setName( "p3" );
    51 
    52         Person p4 = new Person() ;
    53         p4.setAge( 15 ); 
    54         p4.setName( "p4" );
    55 
    56         list.add( p1 ) ;
    57         list.add( p2 ) ;
    58         list.add( p3 ) ;
    59         list.add( p4 ) ;
    60 
    61         return list ;
    62     }
    63 }


     

    2、创建Person类

       

    package com.app;
    
    public class Person {
    
        private int age ;
        private String name ;
        
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }


    3、运行结果(实现对年龄的排序)

        person   p1  10
        person   p4  15
        person   p3  20
        person   p2  30

     

  • 相关阅读:
    在am中定义消息集束,并在CO中验证之后抛出异常。
    在EORow或者VORow中对数据进行重复性校验
    axis2 webservice jar包使用情况(转)
    std::function以及std::bind
    Qt学习过程
    NULL和nullptr
    清空表且id为0
    C++线程互斥、同步
    warning: deleting 'void *' is undefined 错误
    Classification / Recognition
  • 原文地址:https://www.cnblogs.com/zhaoyanjun/p/4538379.html
Copyright © 2011-2022 走看看