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;
  }
 }
}

你可能感兴趣的:(comparator)