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

在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口以达到我们想要的目标。

接下来我们模拟下在集合对象中对日期属性进行排序

一、实体类Step

package com.ljq.entity;

/** *  */public class Step{    /** 时间 */    private String acceptTime = "";    /** 地点 */    private String acceptAddress = "";

    public Step() {        super();    }

    public Step(String acceptTime, String acceptAddress) {        super();        this.acceptTime = acceptTime;        this.acceptAddress = acceptAddress;    }

    public String getAcceptTime() {        return acceptTime;    }

    public void setAcceptTime(String acceptTime) {        this.acceptTime = acceptTime;    }

    public String getAcceptAddress() {        return acceptAddress;    }

    public void setAcceptAddress(String acceptAddress) {        this.acceptAddress = acceptAddress;    }

}

二、实现Comparator接口

package com.ljq.entity;

import java.util.Comparator;import java.util.Date;

import com.ljq.util.UtilTool;

/** * 对Step类进行排序 *  * @author Administrator * */public class StepComparator implements Comparator<Step>{

    /**     * 如果o1小于o2,返回一个负数;如果o1大于o2,返回一个正数;如果他们相等,则返回0;     */    @Override    public int compare(Step o1, Step o2) {        Date acceptTime1=UtilTool.strToDate(o1.getAcceptTime(), null);        Date acceptTime2=UtilTool.strToDate(o2.getAcceptTime(), null);

        //对日期字段进行升序,如果欲降序可采用before方法        if(acceptTime1.after(acceptTime2)) return 1;        return -1;    }

}

三、测试

package junit;

import java.util.Collection;import java.util.Collections;import java.util.List;

import org.junit.Test;

public class StepComparatorTest {

    @Test    public void sort() throws Exception{        List<Step> steps=new ArrayList<Step>;        //对集合对象进行排序         StepComparator comparator=new StepComparator();        Collections.sort(steps, comparator);        if(steps!=null&&steps.size()>0){            for(Step step:steps){               System.out.println(step.getAcceptAddress());               System.out.println(step.getAcceptTime());            }        }

    }}
时间: 2024-10-27 13:37:36

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

跟王老师学集合(十一)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中数组,列表,集合的基本用法

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中List的用法

List接口对Collection进行了简单的扩充. 它的具体实现类常用的有ArrayList和LinkedList. ArrayList从其命名中可以看出它是以一种类似数组的形式存储,因此它的随机访问速度极快,但插入和移除元素的速度很慢. LinkedList的内部实现是链表,它适合于在链表中间需要频繁进行插入和删除操作,不适合随机访问,LinkedList可以当作堆栈.队列和双向队列使用. 一个List可以生成ListIterator,使用它可以从两个方向遍历List,也可以从List中间插

JAVA中Comparator的使用

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

java中stringBuilder的用法

java中stringBuilder的用法 String对象是不可改变的.每次使用 System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需要对字符串执行重复修改的情况下,与创建新的 String对象相关的系统开销可能会非常昂贵.如果要修改字符串而不创建新的对象,则可以使用System.Text.StringBuilder类.例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder类可以提升性能. 通过用一个重载的

Java中输入的用法

Java中输入 1. 读取输入 1)构建一个Scanner,附属到System.in Scanner in = new Scanner(System.in); 此时可以使用Scanner类的各种方法来读取输入.例如:nextLine方法来读取一行输入 System.out.print("What is your name?"); String name = in.nextLine(); nextLine():    读取的一行中可能包含空格 next():           读取单个

Java中Comparator接口

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

关于时间,日期,星期,月份的算法(Java中Calendar的用法)(一)

package cn.outofmemory.codes.Date; import java.util.Calendar; import java.util.Date; public class CalendarDemo { public static void main(String[] args) { Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()); System.out.println("如今时间

java成神之——java中string的用法

java中String的用法 String基本用法 String分割 String拼接 String截取 String换行符和format格式化 String反转字符串和去除空白字符 String获取指定位置字符和replace的使用 StringBuffer的使用 字符串转换 基本类型的转换 添加字符编码 Base64的编码和解码 结语 java中String的用法 String基本用法 字符串一旦创建在堆中就不可变 字符串声明 String str = "你好"; String s