`
tyl
  • 浏览: 50395 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

Comparator例子

 
阅读更多

import java.util.Comparator;

public class ComparatorTask implements Comparator<Object> {
 private int count = 0;
 /**
  * compare:排序
  * @param @return 设定文件
  * @return String 对象类型
  * @throws
  * @since CodingExample Ver 1.1
  */
 public int compare(Object obj1, Object obj2) {
//  Object : id$$$processDate1$$$taskDate1$$$taskFinishDate1
  int returnvalue = 0;
  if (obj1 instanceof String) {
   String str1 = (String) obj1;
   String str2 = (String) obj2;
   if (str1.indexOf("$$$") > 0) {
    count = 0;
    getNum(str1);
    if (count == 3) {
     // String id1 = str1.substring(0, str1.indexOf("$$$"));
     String sep1 = str1.substring(str1.indexOf("$$$") + 3);
     String processDate1 = sep1.substring(0, sep1.indexOf("$$$")).trim();
     String taskDate1 = sep1.substring(sep1.indexOf("$$$") + 3, sep1.lastIndexOf("$$$")).trim();
     String taskFinishDate1 = sep1.substring(sep1.lastIndexOf("$$$") + 3).trim();
  

     // String id2 = str2.substring(0, str2.indexOf("$$$"));
     String sep2 = str2.substring(str2.indexOf("$$$") + 3);
     String processDate2 = sep2.substring(0, sep2.indexOf("$$$")).trim();
     String taskDate2 = sep2.substring(sep2.indexOf("$$$") + 3, sep2.lastIndexOf("$$$")).trim();
     String taskFinishDate2 = sep2.substring(sep2.lastIndexOf("$$$") + 3).trim();

       // 先根据processDate1降序排,相同则根据taskDate1升序排,再根据taskFinishDate1升序排
     returnvalue = (compareStr(processDate1, processDate2) == 0 ? (compareStr(taskDate1, taskDate2) == 0 ? (compareStr(taskFinishDate1, taskFinishDate2) == 0 ? 0 : compareStr(taskFinishDate1, taskFinishDate2)) : compareStr(taskDate1, taskDate2)) : compareStr(processDate2, processDate1));
    }
   }
  }
  return returnvalue;
 }

 /**
  * compareStr:对String类型排序
  * @param @return 设定文件
  * @return String 对象类型
  * @throws
  * @since CodingExample Ver 1.1
  */
 public int compareStr(String o1, String o2) {
  String s1 = (String) o1;
  String s2 = (String) o2;
  int len1 = s1.length();
  int len2 = s2.length();
  int n = Math.min(len1, len2);
  char v1[] = s1.toCharArray();
  char v2[] = s2.toCharArray();
  int pos = 0;
  while (n-- != 0) {
   char c1 = v1[pos];
   char c2 = v2[pos];

   if (c1 != c2) {
    return c1 - c2;
   }
   pos++;
  }
  return len1 - len2;
 }

 /**
  * compareInt:对int类型排序
  * @param @return 设定文件
  * @return String 对象类型
  * @throws
  * @since CodingExample Ver 1.1
  */
 public int compareInt(Integer o1, Integer o2) {
  int val1 = o1.intValue();
  int val2 = o2.intValue();
  return (val1 < val2 ? -1 : (val1 == val2 ? 0 : 1));
 }

 /**
  * compareBoolean:对Boolean类型排序
  * @param @return 设定文件
  * @return String 对象类型
  * @throws
  * @since CodingExample Ver 1.1
  */
 public int compareBoolean(Boolean o1, Boolean o2) {
  return (o1.equals(o2) ? 0 : (o1.booleanValue() == true ? 1 : -1));
 }

 private void getNum(String name) {
  if (name.contains("$$$")) {
   count++;
   getNum(name.substring(name.indexOf("$$$") + 3));
  } else {
   return;
  }
 }
}

分享到:
评论

相关推荐

    java Comparator 用法 例子

    Java中的Comparator接口是排序的关键工具,它允许程序员自定义对象的比较规则,从而在集合、数组或树结构(如TreeSet、TreeMap)中实现定制化的排序。在Java的Collections框架中,Comparator扮演着重要的角色,特别...

    List对象集合的排序:比较器Comparator(简单例子)

    当需要对`List`中的对象进行自定义排序时,`Comparator`接口就派上了用场。`Comparator`是一个可以比较两个对象的类,它提供了一种方式来定义自定义的比较规则,从而实现灵活的排序逻辑。 `Comparator`接口位于`...

    Comparable&Comparator区别

    以下是一个实现`Comparator`接口的例子: ```java import java.util.Comparator; public class CustomerComparator implements Comparator&lt;Customer&gt; { @Override public int compare(Customer c1, Customer c2)...

    比较器Comparator简单用法

    在上面的例子中,我们创建了一个匿名内部类来实现`Comparator`,然后使用`Double.compare()`方法确保了薪水的正确比较。 Apache Commons Lang库提供了`ComparatorUtils`类,它提供了一些方便的工厂方法,可以帮助...

    Java中的Comparator 对多个排序条件的处理

    在Java编程中,`Comparator`接口是用于比较对象的关键工具,尤其在进行自定义排序时。这个接口提供了`compare()`方法,根据特定的规则来决定两个对象的相对顺序。当需要根据多个排序条件对集合进行排序时,可以使用...

    java的Comparator和Comparable.docx

    这个例子展示了如何将字符串 "一"、"二"、"三" 转换成对应的整数值进行排序,使得 "一二" 二" 三"。通过调用 Arrays.sort 方法并传入自定义的 SampleComparator 实例,可以对包含这些字符串的数组进行排序。 **二、...

    Comparable与Comparator的区别

    下面是一个使用Comparator的例子: ```java public class AbsComparator implements Comparator&lt;Integer&gt; { @Override public int compare(Integer o1, Integer o2) { return Math.abs(o1) - Math.abs(o2); // ...

    class MyComparator implements Comparator类的算法 java

    在这个例子中,`MyObject`是我们想要排序的对象,`MyComparator`将决定`MyObject`实例的排序顺序。 `day12`这个文件名可能表示这是一个学习或教程的一部分,可能包含了第12天的学习内容,涵盖了`Comparator`和...

    HBASE-comparator.zip

    在这个例子中,我们首先将RowKey的字节数组转换为字符串,然后将其解析为整数,最后使用Integer的compare方法进行比较。这样,我们就可以确保按照数值大小而非字典序进行排序。 在HBase的表定义或者ColumnFamily...

    JAVA集合的使用(List、Map、Set、Queue,Collections、Comparable与Comparator,排序、搜索,内部类、equals、hashCode)

    要注意的是List,Set,Queue继承了Collection接口,...这里想用一个简单的例子展示一下他们的使用,内容包括:List、Map、Set、Queue,Collections、Comparable与Comparator,排序、搜索,内部类,泛型、重写equals、hashCode

    死磕Lambda表达式(五):Comparator复合

    在之前文章的例子中,我们使用Comparator.comparing静态方法构建了一个Comparator接口的实例,我们再来简单介绍一下。先来看一下Mask类是怎么写的: package one.more.study; /** * 口罩 * @author 万猫学社 */ ...

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

    本文将深入探讨如何实现Comparator接口,并通过一个实际的日期排序例子来展示其用法。 Comparator接口位于java.util包下,它提供了一个compare()方法,该方法接收两个对象作为参数并返回一个整数值。当需要对非自然...

    struts2 sort实例

    在这个例子中,`sort`标签并没有直接用于排序,而是通过提交表单触发Action的执行,Action根据Comparator对列表进行排序。在JSP页面中,用户可以改变`comparator.field`的值,从而改变排序的字段。 总结来说,`...

    Lambda表达式的例子

    假设我们有一个需要排序的Person对象列表,Person对象包含name和age属性,我们可以定义一个Comparator接口的实现,使用Lambda表达式: ```java List&lt;Person&gt; people = ... // 初始化Person对象的列表 // 使用...

    java中Comparable和Comparator的区别

    在这个例子中,list1使用默认的自然排序,即升序排列;而list2通过传入一个Comparator实现了降序排列。 总的来说,Comparable适用于那些需要根据自身属性进行排序的对象,比如基本类型包装类或自定义类;而...

    【ASP.NET编程知识】.NET开发基础从简单的例子理解泛型 分享.docx

    .NET开发基础从简单的例子理解泛型 泛型是.NET框架中的一个重要特性,它允许开发者创建类型安全且可重用的数据结构和算法。泛型的主要优点在于提高了代码的灵活性、效率和安全性,避免了不必要的类型转换,并减少了...

    Comparable接口和Comparator接口的比较

    在上面的例子中,自定义的student类没有实现Comparable接口,而是使用了Arrays.sort()方法和自定义的Comparator来实现排序。通过重写compareTo()方法,可以根据年龄降序排列student对象: ```java class ...

    比较器工具类

    对于上述例子,可以改写为: ```java Collections.sort(list, (s1, s2) -&gt; s1.length() - s2.length()); ``` ### 4. `Comparator`的其他方法 - `thenComparing(Comparator&lt;? super T&gt; other)`:在当前比较器的...

Global site tag (gtag.js) - Google Analytics