compare string integer java

Java
/**
    * Similar to compareTo method But compareTo doesn't return correct result for string+integer strings something like `A11` and `A9`
*/

private int newCompareTo(String comp1, String comp2) {
  // If any value has 0 length it means other value is bigger
  if (comp1.length() == 0) {
    if (comp2.length() == 0) {
      return 0;
    }
    return -1;
  } else if (comp2.length() == 0) {
    return 1;
  }
  if (TextUtils.isDigitsOnly(comp1)) {
    int val1 = Integer.parseInt(comp1);
    if (TextUtils.isDigitsOnly(comp2)) {
      int val2 = Integer.parseInt(comp2);
      return Integer.compare(val1, val2);
    } else {
      return comp1.compareTo(comp2);
    }

  } else {

    int minVal = Math.min(comp1.length(), comp2.length()), sameCount = 0;

    // Loop through two strings and check how many strings are same
    for (int i = 0;i < minVal;i++) {
      char leftVal = comp1.charAt(i), rightVal = comp2.charAt(i);
      if (leftVal == rightVal) {
        sameCount++;
      } else {
        break;
      }
    }
    if (sameCount == 0) {
      return comp1.compareTo(comp2);
    } else {
      String newStr1 = comp1.substring(sameCount), newStr2 = comp2.substring(sameCount);
      if (TextUtils.isDigitsOnly(newStr1) && TextUtils.isDigitsOnly(newStr2)) {
        return Integer.compare(Integer.parseInt(newStr1), Integer.parseInt(newStr2));
      } else {
        return comp1.compareTo(comp2);
      }
    }
  }
}
Source

Also in Java: