CompareTo
In sorting, one string
will come before or after another. Sometimes two strings are equal. With compareTo
we determine lexical ordering.
In Java, we call compareTo
on a String
instance. We pass one argument—this is the string
we are comparing against the instance string
.
Let us test the compareTo
method. The string
"bird" should come before the string
"cat." It is alphabetically earlier.
compareTo
method returns -1 when the earlier string
is the instance, and the later string
is the argument.public class Program { public static void main(String[] args) { String value1 = "cat"; String value2 = "bird"; // Compare these strings. int result1 = value1.compareTo(value2); System.out.println("cat compareTo bird = " + result1); int result2 = value2.compareTo(value1); System.out.println("bird compareTo cat = " + result2); // Compare string against itself. // ... It is equal so the result is 0. int result3 = value1.compareTo(value1); System.out.println("cat compareTo cat = " + result3); } }cat compareTo bird = 1 bird compareTo cat = -1 cat compareTo cat = 0
CompareToIgnoreCase
With compareTo
, strings are compared based on their ordinal values. In ASCII, uppercase letters have lower values than lowercase ones.
compareToIgnoreCase
method to treat lowercase and uppercase letters the same.public class Program { public static void main(String[] args) { String value1 = "DOG"; String value2 = "bird"; // This is negative, so DOG comes before bird. int result1 = value1.compareTo(value2); System.out.println(result1); // Ignore case. // ... Now bird comes before dog (the result is positive). int result2 = value1.compareToIgnoreCase(value2); System.out.println(result2); } }-30 2
Result
valueThe key part about compareTo
(and compareToIgnoreCase
) is that the result int
is negative, positive, or zero. These mean different sort orders.
compareTo
returns a negative number, the instance string
comes before the argument.string
comes after the argument string
.With compareTo
and compareToIgnoreCase
, we often implement a sorting method. We can directly return the result of compareTo
.