Объяснение относительно того, почему это сравнение строк приводит к ошибке?

Может ли кто-нибудь объяснить, почему следующая строка кода приводит к ложному.

Код возвращает true, если строки не заглавные. Не следует ли игнорировать случай, потому что результат тот же?

System.out.print( String("Carthorse".toCharArray().sortedArray()) .equals(String("Orchestra".toCharArray().sortedArray()),true) ) 

Сортировка не игнорирует случаи, вот что вы на самом деле сравниваете:

 //Caehorrst vs. Oacehrrst 

Вместо этого попробуйте следующее:

 val s1 = String("Carthorse".toLowerCase().toCharArray().sortedArray()) val s2 = String("Orchestra".toLowerCase().toCharArray().sortedArray()) println("$s1 vs. $s2, equal? ${s1==s2}") //acehorrst vs. acehorrst, equal? true 

Или немного fun :

 fun String.sortedCaseIgnore() = String(toLowerCase().toCharArray().sortedArray()) val s1 = "Carthorse".sortedCaseIgnore() val s2 = "Orchestra".sortedCaseIgnore() 

И btw, используйте println() в пользу System.out.println() , вот его определение (часть стандартной библиотеки Kotlin, без явного импорта):

 public inline fun println(message: Any?) { System.out.println(message) }