Home | History | Annotate | Download | only in util
      1 /* GENERATED SOURCE. DO NOT MODIFY. */
      2 //  2016 and later: Unicode, Inc. and others.
      3 // License & terms of use: http://www.unicode.org/copyright.html#License
      4 /**
      5  *******************************************************************************
      6  * Copyright (C) 2001-2013, International Business Machines Corporation and    *
      7  * others. All Rights Reserved.                                                *
      8  *******************************************************************************
      9  */
     10 package android.icu.util;
     11 
     12 import android.icu.lang.UCharacter;
     13 
     14 /**
     15  * A string used as a key in java.util.Hashtable and other
     16  * collections.  It retains case information, but its equals() and
     17  * hashCode() methods ignore case.
     18  * @hide Only a subset of ICU is exposed in Android
     19  */
     20 public class CaseInsensitiveString {
     21 
     22     private String string;
     23 
     24     private int hash = 0;
     25 
     26     private String folded = null;
     27 
     28     private static String foldCase(String foldee)
     29     {
     30         return UCharacter.foldCase(foldee, true);
     31     }
     32 
     33     private void getFolded()
     34     {
     35         if (folded == null) {
     36             folded = foldCase(string);
     37         }
     38     }
     39 
     40     /**
     41      * Constructs an CaseInsentiveString object from the given string
     42      * @param s The string to construct this object from
     43      */
     44     public CaseInsensitiveString(String s) {
     45         string = s;
     46     }
     47     /**
     48      * returns the underlying string
     49      * @return String
     50      */
     51     public String getString() {
     52         return string;
     53     }
     54     /**
     55      * Compare the object with this
     56      * @param o Object to compare this object with
     57      */
     58     public boolean equals(Object o) {
     59         if (o == null) {
     60             return false;
     61         }
     62         if (this == o) {
     63             return true;
     64         }
     65         if (o instanceof CaseInsensitiveString) {
     66             getFolded();
     67             CaseInsensitiveString cis = (CaseInsensitiveString) o;
     68             cis.getFolded();
     69             return folded.equals(cis.folded);
     70         }
     71         return false;
     72     }
     73 
     74     /**
     75      * Returns the hashCode of this object
     76      * @return int hashcode
     77      */
     78     public int hashCode() {
     79         getFolded();
     80 
     81         if (hash == 0) {
     82             hash = folded.hashCode();
     83         }
     84 
     85         return hash;
     86     }
     87 
     88     /**
     89      * Overrides superclass method
     90      */
     91     public String toString() {
     92         return string;
     93     }
     94 }
     95