JAVA:主键解决方法(1):最大值+1

/**
  * 判断字符串是不是数字
  *
  * @param str
  * @return true OR false
  * @see isNumeric("abc") = false
  * @see isNumeric("123") = true
  */
 public static boolean isNumeric(String str) {
  Pattern pattern = Pattern.compile("[0-9]*");
  Matcher isNum = pattern.matcher(str);
  if (!isNum.matches()) {
   return false;
  }
  return true;
 }

 /**
  * 得到01,或者001
  *
  * @param segNum
  *            段长度
  * @return String
  * @see getNewMaxStr(2) = "01"
  * @see getNewMaxStr(3) = "001"
  * @see getNewMaxStr(4) = "0001"
  */

 public static String getNewMaxStr(int segNum) {
  String result = "";
  result = fillStr("0", segNum - 1) + 1;
  return result;
 }

 /**
  * 通过字符串得到 字符串+1的最大数
  *
  * @param str
  *            字符串
  * @param segNum
  *            段长度
  * @return String
  * @see getNewMaxStr("002145", 3)=002146;
  * @see getNewMaxStr("002005", 3)=002006;
  * @see getNewMaxStr("002999", 2)="error: '[0029][99]' segNum is end the
  *      MAXSegNum."
  * @see getNewMaxStr("4123563364", 5)=4123563365;
  */
 public static String getNewMaxStr(String str, int segNum) {
  String result = "";

  if (isNumeric(str) == false) {
   // 判断是否数字
   result = "error: '" + str + "' not a Number.";
  } else {
   // 字符串长度是否能整除 段长
   int strLength = str.length();
   int mod = strLength % segNum;
   if (mod != 0) {
    result = "error: '" + str + "' not Mod segNum.";
   } else {
    String endSegStr = str.substring(strLength - segNum, strLength);
    String stratSegStr = str.substring(0, strLength - segNum);
    // System.out.println("endSegStr:" + endSegStr);
    // System.out.println("stratSegStr:" + stratSegStr);

    // 设置后位段数最大值

    // 将后位段字符str转成int,并 +1, 并取字符串,判断是否已经到最大值
    int segNumMaxStrInt = Integer.parseInt(endSegStr) + 1;
    String segNumMaxStr = String.valueOf(segNumMaxStrInt);
    if (segNumMaxStr.length() == (segNum + 1)) {
     result = "error: '[" + stratSegStr + "][" + endSegStr
       + "]' segNum is end the MAXSegNum.";
    } else {
     // 最大数 + 1; 如:100, 1000, 10000等
     int segNumMax = Integer
       .parseInt("1" + fillStr("0", segNum));
     // System.out.println("segNumMax:" +
     // String.valueOf(segNumMax + segNumMaxStrInt));
     String segNumStr = String.valueOf(
       segNumMax + segNumMaxStrInt).substring(1,
       segNum + 1);
     result = stratSegStr + segNumStr;
    }
   }
  }
  return result;
 }
}

原文地址:https://www.cnblogs.com/liul21cn/p/1297856.html