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

 

 

时间: 2024-09-28 19:03:53

Java 中Comparator 的使用,实现集合排序的相关文章

浅析Java中comparator接口与Comparable接口的区别_java

Comparable 简介 Comparable 是排序接口. 若一个类实现了Comparable接口,就意味着"该类支持排序".  即然实现Comparable接口的类支持排序,假设现在存在"实现Comparable接口的类的对象的List列表(或数组)",则该List列表(或数组)可以通过 Collections.sort(或 Arrays.sort)进行排序. 此外,"实现Comparable接口的类的对象"可以用作"有序映射(如

Java中基于栈和队列的排序算法

题目1:使用一个辅助栈和一些附加非数组变量将堆栈S中的元素按升序存储. 题目2:使用一个辅助队列和一些附加非数组变量将队列Q中的元素按升序存储. 1.用Java实现,首先使用链表LinkedList构造栈数据结构. import java.util.LinkedList; public class IntStack { private LinkedList<Integer> storage = new LinkedList<Integer> (); /** 入栈 */ public

我的Java开发学习之旅------&amp;gt;Java利用Comparator接口对多个排序条件进行处理

一需求 二实现Comparator接口 三验证排序结果 验证第一条件首先按级别排序级别最高的排在前面 验证第二条如果级别相等那么按工资排序工资高的排在前面 验证第三条如果工资相当则按入职年数排序入职时间最长的排在前面 附录javautilComparator接口源代码 一.需求 假设现在有个如此的需求:需要对一个这样的雇员列表进行排序,排序规则如下: 1.首先级别最高的排在前面, 2.如果级别相等,那么按工资排序,工资高的排在前面, 3.如果工资相当则按入职年数排序,入职时间最长的排在前面. 雇

JAVA中,数组的操作与排序

自己写了正向反向的冒泡排序,还用了静态和NEW方法实现. import java.util.Arrays; public class HelloJava { public static void main(String[] args) { // TODO Auto-generated method stub int a[][] = new int[3][4]; for (int i = 0; i < a.length; i++){ for (int j = 0; j < a[i].length

Java中Hibernate持久化类(map)集合属性的元素为组件的映射

1.hibernate.cfg.xml  代码如下 复制代码 <!DOCTYPE hibernate-configuration PUBLIC         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuratio

Java 中Comparable 和 Comparator的比较

本文,先介绍Comparable 和Comparator两个接口,以及它们的差异:接着,通过示例,对它们的使用方法进行说明. Comparable 简介 Comparable 是排序接口. 若一个类实现了Comparable接口,就意味着"该类支持排序".  即然实现Comparable接口的类支持排序,假设现在存在"实现Comparable接口的类的对象的List列表(或数组)",则该List列表(或数组)可以通过 Collections.sort(或 Array

Java中自然排序和比较器排序详解_java

前言 当指执行插入排序.希尔排序.归并排序等算法时,比较两个对象"大小"的比较操作.我们很容易理解整型的 i>j 这样的比较方式,但当我们对多个对象进行排序时,如何比较两个对象的"大小"呢?这样的比较 stu1 > stu2 显然是不可能通过编译的.为了解决如何比较两个对象大小的问题,JDK提供了两个接口 java.lang.Comparable 和 java.util.Comparator . 一.自然排序:java.lang.Comparable C

Java中实现Comparator接口和用法实例(简明易懂)_java

在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口以达到我们想要的目标. 接下来我们模拟下在集合对象中对日期属性进行排序 一.实体类Step package com.ljq.entity; /** * 运号单流程 * * @author Administrator * */ public class Step{ /** 处理时间 */ private String acceptTime = ""; /** 快件所在地点 */ private String

JavaScript实现Java中Map容器的方法_javascript技巧

本文实例讲述了JavaScript实现Java中Map容器的方法.分享给大家供大家参考,具体如下: 声明一下,JavaScript和Java的区别就像雷锋和雷峰塔的区别. 在Java中,Map是一种集合,用来存储Key-Value键值对的容器.根据键得到值,因此不允许键重复(重复了的覆盖),但允许值重复.JavaScript中的对象特性,就是不允许有相同的属性存在,和Java的Map非常的相似,所以可以利用这个特性在JavaScript中来实现Map容器,实现基本的增删查的操作. functio