Java对字符串排序

 

import java.util.Comparator;
public class MyComparator implements Comparator<Object> {
 private int count = 0;
 /**
  * compare:排序
  * @param @return 设定文件
  * @return String 对象类型
  * @throws
  * @since CodingExample Ver 1.1
  */ 

 

//例子:对字符串:id$$$page进行排序,先根据id排,id相同用page排序。

 public int compare(Object obj1, Object obj2) {
  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 == 2) {
     String id1 = str1.substring(0, str1.indexOf("$$$"));
     String strpage1 = str1.substring(str1.indexOf("$$$") + 3);
     String page1 = strpage1.substring(0, strpage1.indexOf("$$$"));

     Integer intpage1 = 0;
     try {
      intpage1 = Integer.valueOf(page1);
     } catch (NumberFormatException e) {
      e.printStackTrace();
     }

     String id2 = str2.substring(0, str2.indexOf("$$$"));
     String strpage2 = str2.substring(str2.indexOf("$$$") + 3);
     String page2 = strpage2.substring(0, strpage2.indexOf("$$$"));

     Integer intpage2 = 0;
     try {
      intpage2 = Integer.valueOf(page2);
     } catch (NumberFormatException e) {
      e.printStackTrace();
     }
     //先根据id排,相同则根据intpage2排
     returnvalue = (compareStr(id1, id2) == 0 ? (compareInt(intpage1, intpage2) == 0 ? 0 : compareInt(intpage1, intpage2)) : compareStr(id1, id2));
    }
   }
  }
  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("$$$") + 1));
  } else {
   return;
  }
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值