java自定义类型 比较排序 Comparator接口

String service_time = "6:00:00,7:00:00,8:00:00,9:00:00,10:00:00,11:00:00,12:00:00,13:00:00,14:00:00,15:00:00,16:00:00,17:00:00,18:00:00,19:00:00,20:00:00,21:00:00,22:00:00
";
List<String> list = StringUtil.stringToList(service_time, ",");
StringTimeSort sort = new StringTimeSort();
Collections.sort(list,sort);
package com.enation.eop.sdk.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Comparator;

public class StringTimeSort implements Comparator{

    @Override
    public int compare(Object arg0, Object arg1) {
        // TODO Auto-generated method stub
        String time0 = (String) arg0;
        String time1 = (String) arg1;
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
        int t0 = 0;
        int t1 = 0;
        try {
            t0 = (int) sdf.parse(time0).getTime();
            t1 = (int) sdf.parse(time1).getTime();
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return t0 > t1 ? 1 : -1; //按照时间的由小到大排列
    }

}
通过实现Comparator接口 完成自定义排序
时间: 2024-12-12 21:03:37

java自定义类型 比较排序 Comparator接口的相关文章

黑马程序员-JAVA学习之Comparable与Comparator接口

--------android培训.java培训.期待与你交流!-------- public interface Comparator<T> 此接口提供对某个collection集合对象进行强行整体排序的比较函数.可以将 Comparator 传递给 sort() 方法(如 Collections.sort 或 Arrays.sort),从而允许在排序顺序上实现自定义精确控制.还可以使用 Comparator 来控制某些数据结构(如有序 set或有序映射)的顺序,或者为那些没有自然顺序的co

[Java 8] 字符串遍历和Comparator接口

遍历一个字符串 在Java 8中,CharSequence接口新添加了一个方法叫做chars(),方法的签名是这个样子的: public default IntStream chars() default关键字修饰的接口方法是Java 8中新添加的特性,目的是向接口中添加已经实现的方法.chars()方法返回了一个IntStream类型,所以chars()实际上是为所有实现了CharSequence接口的类型(String类,StringBuffer类,StringBuilder类等)开启了通往

CollectionsDemo1+2 List集合普通元素的排序,自定义类型的排序

CollectionsDemo1 List集合普通元素的排序,自然排序 /** * List集合的排序 * 排序List集合使用集合的工具类Collections的静态方法sort, * 该方法可以对指定List集合进行自然排序(从小到大) */ public class SortDemo1 { public static void main(String[] args) { //1,生成一个List<Insteger>集合 List<Integer> list = new Arr

java自定义类型 作为HashMap中的Key值 (Pair&lt;V,K&gt;为例)

由于是自定义类型,所以HashMap中的equals()函数和hashCode()函数都需要自定义覆盖. 不然内容相同的对象对应的hashCode会不同,无法发挥算法的正常功能,覆盖equals函数,应该就相当于c++重载==运算符来保证能判断是否相等.只不过java没有自定义重载运算符这个功能的,需要进行函数覆盖. equals的函数原型是 boolean equals(Object o);注意括号内.hashCode的函数原型就是int hashCode(); 先看一段代码: import

JAVA自定义类的排序

摘抄自 b站尚硅谷JAVA教程 通过实现 Comparable 或者 Camparator来完成 package com.LearnJava.Compare; public class myClass implements Comparable{ private String name; private double price; public myClass(String name, double price) { this.name = name; this.price = price; }

Java自定义类型作为HasMap的key的查找

最近常常会用到一些之前看过却没有实际去实现的小细节,深有感慨(掌握一门技术绝不是看一遍就够了,一遍远远不够,远远不够........), 言归正传,先直接上代码 Attributeresult 1 public class Attributeresult { 2 String value; 3 String result; 4 5 public Attributeresult() { 6 7 } 8 9 public Attributeresult(String value, String re

Binder AIDL中自定义类型传递的源码分析

binder机制实现的IPC和共享内存的方式不同,它采取的是值拷贝的方式,即进程间传递的实体遵循Parcelable协议, Bp端负责向Parcel里写东西,Bn端负责从Parcel里读取还原,顺序是双方约定的.原型如下,Bp/Bn端收到的其实 都只是彼此的clone. Aidl(Android Interface Definition Language)简化了binder的使用,做了大量封装 但Aidl默认支持的类型包括Java 原始类型(如int.long.boolean等) 和 基础封装类

Comparable接口与Comparator接口的比较————Comparator接口详解

Comparator接口位于:java.util包中. Comparator接口:1. 强行对某个对象的Collection进行整体排序.值得注意的是:Comparator接口可以作为参数传到一些sort()方法中,例如:Collection.sort(List<T> list, Comparator<? super T> c).Arrays.sort(T[] a, Comparator<? super T> c); 2. Comparator接口指定的顺序,可以不是字

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

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