首页 > 代码库 > String类型中ToString hashCode equals compareTo等方法的经典实现
String类型中ToString hashCode equals compareTo等方法的经典实现
private final char value[]; private int hash; // Default to 0 public String(String original) { this.value =http://www.mamicode.com/ original.value; this.hash = original.hash; } public String(char value[]) { this.value =http://www.mamicode.com/ Arrays.copyOf(value, value.length); }String: |--CompareTo public int compareTo(String anotherString) { int len1 = value.length; int len2 = anotherString.value.length; int lim = Math.min(len1, len2); //取较小长度的字符串作为比较长度 char v1[] = value; char v2[] = anotherString.value; int k = 0; while (k < lim) { char c1 = v1[k]; char c2 = v2[k]; if (c1 != c2) { //逐个比较 return c1 - c2; } k++; } return len1 - len2; } |--equals public boolean equals(Object anObject) { if (this == anObject) { //地址相同直接判断相等 return true; } if (anObject instanceof String) { //先判别类是否相同 String anotherString = (String)anObject; int n = value.length; if (n == anotherString.value.length) { //字符串长度是否一致 char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0) { if (v1[i] != v2[i]) //逐个进行比较 return false; i++; } return true; } } return false; } |--hashCode public int hashCode() { int h = hash; if (h == 0 && value.length > 0) { char val[] = value; for (int i = 0; i < value.length; i++) { h = 31 * h + val[i]; } hash = h; } return h; } //toString的经典实现 public static String toString(int[] a) { if (a == null) return "null"; int iMax = a.length - 1; if (iMax == -1) return "[]"; StringBuilder b = new StringBuilder(); b.append(‘[‘); for (int i = 0; ; i++) {//中间省略判断,提高效率 b.append(a[i]); if (i == iMax) return b.append(‘]‘).toString(); b.append(", "); } }
String类型中ToString hashCode equals compareTo等方法的经典实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。