Discuss / Java / compareTo在比较字符串时,挨个字符比较,找到不一致时返回这两个字符比较的值,所以导致A2排在A10后面(2>1)

compareTo在比较字符串时,挨个字符比较,找到不一致时返回这两个字符比较的值,所以导致A2排在A10后面(2>1)

Topic source

class UserComparator implements Comparator<User>{

public int compare(User u1,User u2) {

if(u1.number.charAt(0) == u2.number.charAt(0)) {         // 判断两人都是A还都是V

if(u1.number.length() < u2.number.length()) {return -1;}  // 比较number长度,短的优先

if(u1.number.length() > u2.number.length()) {return  1;} // 比较number长度,短的优先

return u1.number.compareTo(u2.number);                      // 长度一致时,再用compareTo比较字符串

}

if(u1.number.charAt(0) == 'V') {return -1;}

else {return  1;}

}

}


  • 1

Reply