Javolution 6.0.0 java
LexicalCaseInsensitiveComparatorImpl.java
Go to the documentation of this file.
1 /*
2  * Javolution - Java(TM) Solution for Real-Time and Embedded Systems
3  * Copyright (C) 2012 - Javolution (http://javolution.org/)
4  * All rights reserved.
5  *
6  * Permission to use, copy, modify, and distribute this software is
7  * freely granted, provided that this notice is preserved.
8  */
9 package javolution.util.internal.comparator;
10 
11 import java.io.Serializable;
12 
14 
18 public class LexicalCaseInsensitiveComparatorImpl implements
19  Equality<CharSequence>, Serializable {
20 
21  private static final long serialVersionUID = -1046672327934410697L;
22 
23  @Override
24  public int hashCodeOf(CharSequence csq) {
25  if (csq == null)
26  return 0;
27  int h = 0;
28  for (int i = 0, n = csq.length(); i < n;) {
29  h = 31 * h + up(csq.charAt(i++));
30  }
31  return h;
32  }
33 
34  @Override
35  public boolean areEqual(CharSequence csq1, CharSequence csq2) {
36  if (csq1 == csq2)
37  return true;
38  if ((csq1 == null) || (csq2 == null))
39  return false;
40  if ((csq1 instanceof String) && (csq2 instanceof String)) // Optimization.
41  return ((String) csq1).equalsIgnoreCase((String) csq2);
42  int n = csq1.length();
43  if (csq2.length() != n)
44  return false;
45  for (int i = 0; i < n;) {
46  if (up(csq1.charAt(i)) != up(csq2.charAt(i++)))
47  return false;
48  }
49  return true;
50  }
51 
52  @Override
53  public int compare(CharSequence left, CharSequence right) {
54  if (left == null)
55  return -1;
56  if (right == null)
57  return 1;
58  if ((left instanceof String) && (right instanceof String)) // Optimization.
59  return ((String) left).compareToIgnoreCase((String) right);
60  int i = 0;
61  int n = Math.min(left.length(), right.length());
62  while (n-- != 0) {
63  char c1 = up(left.charAt(i));
64  char c2 = up(right.charAt(i++));
65  if (c1 != c2)
66  return c1 - c2;
67  }
68  return left.length() - right.length();
69  }
70 
71  // Converts to upper case.
72  private static char up(char c) {
73  return Character.toUpperCase(c);
74  }
75 }
javolution
javolution.util.internal.comparator.LexicalCaseInsensitiveComparatorImpl.hashCodeOf
int hashCodeOf(CharSequence csq)
Definition: LexicalCaseInsensitiveComparatorImpl.java:24
javolution.util.internal.comparator.LexicalCaseInsensitiveComparatorImpl
Definition: LexicalCaseInsensitiveComparatorImpl.java:19
javolution.util.internal.comparator.LexicalCaseInsensitiveComparatorImpl.up
static char up(char c)
Definition: LexicalCaseInsensitiveComparatorImpl.java:72
javolution.util.internal.comparator.LexicalCaseInsensitiveComparatorImpl.compare
int compare(CharSequence left, CharSequence right)
Definition: LexicalCaseInsensitiveComparatorImpl.java:53
javolution.util.internal.comparator.LexicalCaseInsensitiveComparatorImpl.areEqual
boolean areEqual(CharSequence csq1, CharSequence csq2)
Definition: LexicalCaseInsensitiveComparatorImpl.java:35
javolution.util.function.Equality
Definition: Equality.java:39
javolution.util.function
Definition: Consumer.java:9
javolution.util.internal.comparator.LexicalCaseInsensitiveComparatorImpl.serialVersionUID
static final long serialVersionUID
Definition: LexicalCaseInsensitiveComparatorImpl.java:21
javolution.util
Definition: FastBitSet.java:9