9 package javolution.util.internal.comparator;
11 import java.io.Serializable;
19 Equality<CharSequence>, Serializable {
28 for (
int i = 0, n = csq.length(); i < n;) {
29 h = 31 * h +
up(csq.charAt(i++));
35 public boolean areEqual(CharSequence csq1, CharSequence csq2) {
38 if ((csq1 ==
null) || (csq2 ==
null))
40 if ((csq1 instanceof String) && (csq2 instanceof String))
41 return ((String) csq1).equalsIgnoreCase((String) csq2);
42 int n = csq1.length();
43 if (csq2.length() != n)
45 for (
int i = 0; i < n;) {
46 if (
up(csq1.charAt(i)) !=
up(csq2.charAt(i++)))
53 public int compare(CharSequence left, CharSequence right) {
58 if ((left instanceof String) && (right instanceof String))
59 return ((String) left).compareToIgnoreCase((String) right);
61 int n = Math.min(left.length(), right.length());
63 char c1 =
up(left.charAt(i));
64 char c2 =
up(right.charAt(i++));
68 return left.length() - right.length();
72 private static char up(
char c) {
73 return Character.toUpperCase(c);