private static int compareSerialNum(String str1,String str2){ if(str1.equals(str2)){ return 0; } if(!str1.contains(".")&&!str2.contains(".")){ return str1.compareTo(str2); }else{ int i1=0,i2=0; char c1='*',c2='*'; if(str1.matches("[A-Z].*")){ c1 = str1.charAt(0); }else{ if(str1.contains(".")){ i1 = Integer.parseInt(str1.substring(0,str1.indexOf("."))); }else{ i1 = Integer.parseInt(str1); } } if(str2.matches("[A-Z].*")){ c2 = str2.charAt(0); }else{ if(str2.contains(".")){ i2 = Integer.parseInt(str2.substring(0,str2.indexOf("."))); }else{ i2 = Integer.parseInt(str2); } } if(c1!=c2){ return c1-c2; }else{ if(i1!=i2){ return i1-i2; } } } char[] charArr1 = str1.toCharArray(); char[] charArr2 = str2.toCharArray(); int length1 = str1.length(); int length2 = str2.length(); int len = length1>length2?length2:length1; for(int i=0;i<len;){ if(charArr1[i] == charArr2[i]){ i++; }else if(charArr1[i] == '.'){ return -1; }else if(charArr2[i] == '.'){ return 1; }else{ return charArr1[i] - charArr2[i]; } } return length1-length2; }