Class UTF16.StringComparator

  • All Implemented Interfaces:
    java.util.Comparator<java.lang.String>
    Enclosing class:
    UTF16

    public static final class UTF16.StringComparator
    extends java.lang.Object
    implements java.util.Comparator<java.lang.String>

    UTF16 string comparator class. Allows UTF16 string comparison to be done with the various modes

    • Code point comparison or code unit comparison
    • Case sensitive comparison, case insensitive comparison or case insensitive comparison with special handling for character 'i'.

    The code unit or code point comparison differ only when comparing supplementary code points (\u10000..\u10ffff) to BMP code points near the end of the BMP (i.e., \ue000..\uffff). In code unit comparison, high BMP code points sort after supplementary code points because they are stored as pairs of surrogates which are at \ud800..\udfff.

    See Also:
    FOLD_CASE_DEFAULT, FOLD_CASE_EXCLUDE_SPECIAL_I
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static int FOLD_CASE_DEFAULT
      Option value for case folding comparison:
      static int FOLD_CASE_EXCLUDE_SPECIAL_I
      Option value for case folding: Use the modified set of mappings provided in CaseFolding.txt to handle dotted I and dotless i appropriately for Turkic languages (tr, az).
    • Constructor Summary

      Constructors 
      Constructor Description
      StringComparator()
      Default constructor that does code unit comparison and case sensitive comparison.
      StringComparator​(boolean codepointcompare, boolean ignorecase, int foldcaseoption)
      Constructor that does comparison based on the argument options.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int compare​(java.lang.String a, java.lang.String b)
      Compare two strings depending on the options selected during construction.
      boolean getCodePointCompare()
      Checks if the comparison mode is code point compare.
      boolean getIgnoreCase()
      Checks if Comparator is in the case insensitive mode.
      int getIgnoreCaseOption()
      Gets the fold case options set in Comparator to be used with case insensitive comparison.
      void setCodePointCompare​(boolean flag)
      Sets the comparison mode to code point compare if flag is true.
      void setIgnoreCase​(boolean ignorecase, int foldcaseoption)
      Sets the Comparator to case-insensitive comparison mode if argument is true, otherwise case sensitive comparison mode if set to false.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface java.util.Comparator

        equals, reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
    • Field Detail

      • FOLD_CASE_DEFAULT

        public static final int FOLD_CASE_DEFAULT
        Option value for case folding comparison:

        Comparison is case insensitive, strings are folded using default mappings defined in Unicode data file CaseFolding.txt, before comparison.

        See Also:
        Constant Field Values
      • FOLD_CASE_EXCLUDE_SPECIAL_I

        public static final int FOLD_CASE_EXCLUDE_SPECIAL_I
        Option value for case folding: Use the modified set of mappings provided in CaseFolding.txt to handle dotted I and dotless i appropriately for Turkic languages (tr, az).

        Comparison is case insensitive, strings are folded using modified mappings defined in Unicode data file CaseFolding.txt, before comparison.

        See Also:
        UCharacter.FOLD_CASE_EXCLUDE_SPECIAL_I, Constant Field Values
    • Constructor Detail

      • StringComparator

        public StringComparator()
        Default constructor that does code unit comparison and case sensitive comparison.
      • StringComparator

        public StringComparator​(boolean codepointcompare,
                                boolean ignorecase,
                                int foldcaseoption)
        Constructor that does comparison based on the argument options.
        Parameters:
        codepointcompare - Flag to indicate true for code point comparison or false for code unit comparison.
        ignorecase - False for case sensitive comparison, true for case-insensitive comparison
        foldcaseoption - FOLD_CASE_DEFAULT or FOLD_CASE_EXCLUDE_SPECIAL_I. This option is used only when ignorecase is set to true. If ignorecase is false, this option is ignored.
        Throws:
        java.lang.IllegalArgumentException - If foldcaseoption is out of range
        See Also:
        FOLD_CASE_DEFAULT, FOLD_CASE_EXCLUDE_SPECIAL_I
    • Method Detail

      • setCodePointCompare

        public void setCodePointCompare​(boolean flag)
        Sets the comparison mode to code point compare if flag is true. Otherwise comparison mode is set to code unit compare
        Parameters:
        flag - True for code point compare, false for code unit compare
      • setIgnoreCase

        public void setIgnoreCase​(boolean ignorecase,
                                  int foldcaseoption)
        Sets the Comparator to case-insensitive comparison mode if argument is true, otherwise case sensitive comparison mode if set to false.
        Parameters:
        ignorecase - True for case-insitive comparison, false for case sensitive comparison
        foldcaseoption - FOLD_CASE_DEFAULT or FOLD_CASE_EXCLUDE_SPECIAL_I. This option is used only when ignorecase is set to true. If ignorecase is false, this option is ignored.
        See Also:
        FOLD_CASE_DEFAULT, FOLD_CASE_EXCLUDE_SPECIAL_I
      • getCodePointCompare

        public boolean getCodePointCompare()
        Checks if the comparison mode is code point compare.
        Returns:
        true for code point compare, false for code unit compare
      • getIgnoreCase

        public boolean getIgnoreCase()
        Checks if Comparator is in the case insensitive mode.
        Returns:
        true if Comparator performs case insensitive comparison, false otherwise
      • getIgnoreCaseOption

        public int getIgnoreCaseOption()
        Gets the fold case options set in Comparator to be used with case insensitive comparison.
        Returns:
        either FOLD_CASE_DEFAULT or FOLD_CASE_EXCLUDE_SPECIAL_I
        See Also:
        FOLD_CASE_DEFAULT, FOLD_CASE_EXCLUDE_SPECIAL_I
      • compare

        public int compare​(java.lang.String a,
                           java.lang.String b)
        Compare two strings depending on the options selected during construction.
        Specified by:
        compare in interface java.util.Comparator<java.lang.String>
        Parameters:
        a - first source string.
        b - second source string.
        Returns:
        0 returned if a == b. If a < b, a negative value is returned. Otherwise if a > b, a positive value is returned.
        Throws:
        java.lang.ClassCastException - thrown when either a or b is not a String object