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 extends B{
 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-11-07 22:36:55

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

java中Comparator的用法 -- 实现集合和数组排序

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

跟王老师学集合(十一)java中Comparator的用法

Java中Comparator的用法 主讲人:王少华  QQ群号:483773664 在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口以达到我们想要的目标. 接下来我们模拟下在集合对象中对日期属性进行排序 一.实体类 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 package chapter07_11; public class Person {     private int a

JAVA中Comparator的使用

关于Collections中的sort方法的使用   在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口以达到我们想要的目标. 此排序被保证是稳定的:不会因调用 sort 方法而对相等的元素进行重新排序. 举个例子: 定义一个User类,内有name和score两个属性. 定义一个ArryList,其内部元素为User对象,如何按照User的score进行升序排序? //声明User类型 public class User { public String name

Java中Comparator接口

Comparator位于java.util包下 public interface Comparator<T> 强行对某个对象 collection 进行整体排序 的比较函数.可以将 Comparator 传递给 sort 方法(如 Collections.sort 或 Arrays.sort),从而允许在排序顺序上实现精确控制.还可以使用 Comparator 来控制某些数据结构(如有序 set或有序映射)的顺序,或者为那些没有自然顺序的对象 collection 提供排序. 当且仅当对于一组

java中数组,列表,集合的基本用法

import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class shuzu { public static void main(String[] args){ //数组 array(); //列表 list(); //集合 map(); } public static void array(){ int[] a=new int[]{0,1

Java中的经典算法之选择排序(SelectionSort)

Java中的经典算法之选择排序(SelectionSort) a) 原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕.也就是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录.基于此思想的算法主要有简单选择排序.树型选择排序和堆排序.(这里只介绍常用的简单选择排序) b) 简单选择排序的基本思想:给定数组:int[] arr={里面n个数据}:第1趟排序,在待排序数据arr[1]~arr[n]中选出最小的数

使用Java中Comparator接口实现自定义排序

一般情况下,自己动手写一个简单排序程序还是没有问题的,但是你能保证写出来的排序程序的时间复杂度吗?你能保证程序的正确性吗,鲁棒性呢,还有程序结构的清晰性,可维护性.......综上所述,学习一下排序接口来实现对复杂对象的排序还是很有必要的.Java中有两个用来实现排序的接口Comparator和Comparable接口,本人比较喜欢使用java的Comparator接口,在程序里实现Comparator接口里的compare(Object o1,Object o2)方法,然后在程序中通过调用Ar

java中的最重要的 集合框架

java.util这个重要的包包含大量的类和接口,支持很多的功能.例如,java.util具有能产生伪随机数的类,还包括可以管理日期和时间.观察事件.操作位集合.标记字符串.处理格式化数据等的类.java.util包也包含了Java中功能最强大的子系统之一:集合框架(collections Framework). 以下将分析集合框架中的接口和类. 集合接口: Collection 允许处理一组对象,它位于集合层次结构的项部 Deque 扩展Queue接口,以处理双端队列 List 扩展Colle

comparator的简单学习(集合排序)

package com.hanchao.test; /**  * 实体类Step  * @author liweihan ([email protected])  * @version 1.0 (2016年1月13日 下午4:30:59)  */ public class Step { /** 处理时间 */ private String acceptTime; /** 快件所在地点*/ private String acceptAddress; public Step() { super();