We compare strings to check if they are the same or to find their order. This helps us decide if two words match or which one comes first.
String comparison (equals, compareTo) in Kotlin
val resultEquals: Boolean = string1.equals(string2) val resultCompare: Int = string1.compareTo(string2)
equals() returns true if strings are exactly the same.
compareTo() returns 0 if strings are equal, a negative number if the first string comes before the second, and a positive number if it comes after.
val a = "apple" val b = "apple" println(a.equals(b)) // true
val a = "apple" val b = "banana" println(a.compareTo(b)) // negative number
val a = "apple" val b = "Apple" println(a.equals(b)) // false println(a.compareTo(b)) // positive or negative depending on case
This program compares strings using equals() and compareTo(). It shows how case affects the results.
fun main() { val word1 = "Kotlin" val word2 = "kotlin" val word3 = "Kotlin" println("word1 equals word2: ${word1.equals(word2)}") println("word1 equals word3: ${word1.equals(word3)}") println("word1 compareTo word2: ${word1.compareTo(word2)}") println("word2 compareTo word1: ${word2.compareTo(word1)}") println("word1 compareTo word3: ${word1.compareTo(word3)}") }
equals() is case sensitive. Use equalsIgnoreCase() if you want to ignore case.
compareTo() returns an integer showing order, not just true or false.
Negative result means first string is before second; positive means after.
Use equals() to check if two strings are exactly the same.
Use compareTo() to find the order between two strings.
Both methods consider uppercase and lowercase letters as different.
Practice
val a = "Hello"
val b = "hello"Solution
Step 1: Understand equals() method
The equals() method checks if two strings are exactly the same including case.Step 2: Compare equals() with other options
compareTo() returns an order number, === checks reference equality (not content), equals(ignoreCase=true) ignores case, so only equals() matches exact case-sensitive check.Final Answer:
a.equals(b) -> Option AQuick Check:
Use equals() for exact string match [OK]
- Using compareTo() to check equality
- Assuming === checks content equality
- Using equals(ignoreCase=true) when case matters
str1 and str2 for equality ignoring case in Kotlin?Solution
Step 1: Recall equals() with ignoreCase parameter
In Kotlin, equals() can take ignoreCase=true to compare strings ignoring case differences.Step 2: Check other options
A: equals() without ignoreCase is case-sensitive, B: compareTo(ignoreCase=true) returns Int not Boolean, D: == is case-sensitive.Final Answer:
str1.equals(str2, ignoreCase = true) -> Option AQuick Check:
Use equals(ignoreCase=true) to ignore case [OK]
- Using compareTo(ignoreCase=true) directly (returns Int, not Boolean)
- Using == which is case-sensitive
- Forgetting to set ignoreCase=true
val s1 = "apple"
val s2 = "banana"
println(s1.compareTo(s2))
Solution
Step 1: Understand compareTo() behavior
compareTo() returns a negative number if the first string is lexicographically less than the second.Step 2: Compare "apple" and "banana" lex order
"apple" comes before "banana" alphabetically, so compareTo returns a negative number.Final Answer:
A negative number -> Option BQuick Check:
"apple" < "banana" means compareTo() < 0 [OK]
- Assuming compareTo() returns boolean
- Confusing positive and negative return values
- Thinking compareTo() returns 0 for different strings
val a = "Test"
val b = "test"
if (a.compareTo(b, ignoreCase = true)) {
println("Equal")
} else {
println("Not Equal")
}
Solution
Step 1: Check compareTo() return type
compareTo() returns an Int, not a Boolean, so it cannot be used directly in if condition.Step 2: Understand how to check equality with compareTo()
To check equality ignoring case, compareTo() == 0 should be used, not just compareTo() alone.Final Answer:
compareTo() returns Int, cannot be used as Boolean -> Option DQuick Check:
compareTo() returns Int, use == 0 to check equality [OK]
- Using compareTo() directly as Boolean
- Forgetting to compare result with 0
- Assuming ignoreCase is invalid parameter (it is valid)
val fruits = listOf("Banana", "apple", "Cherry") ignoring case?Solution
Step 1: Understand sorting ignoring case
To sort strings ignoring case, use a comparator that compares strings case-insensitively.Step 2: Check options for case-insensitive sorting
A and D are case-sensitive. C: sortedBy expects key selector, not Comparator (compile error). B uses built-in case-insensitive Comparator correctly.Final Answer:
fruits.sortedWith(String.CASE_INSENSITIVE_ORDER) -> Option CQuick Check:
Use sortedWith(String.CASE_INSENSITIVE_ORDER) for case-insensitive sort [OK]
- Using sorted() which is case-sensitive
- Using sortedBy { it } which is case-sensitive
- Confusing sortedBy (selector) with sortedWith (Comparator)
Ready to prove it?
Pass the test and this pattern moves unknown
