Ce face Array.contentToString
Tablourile din Kotlin sunt tablouri Java, iar toString() lor dă doar tipul și o adresă ([I@6d06d69c). contentToString() întoarce conținutul, în forma [1, 2, 3], la fel cum arată o listă.
Tot din cauza moștenirii Java, a == b pe tablouri verifică dacă sunt același obiect. a contentEquals b verifică dacă au aceeași dimensiune și aceleași elemente în aceeași ordine.
Pentru tablouri de tablouri există contentDeepToString() și contentDeepEquals(), care intră și în tablourile interioare.
Parametri
| Parametru | Descriere |
|---|---|
alt |
Tabloul cu care compari (pentru contentEquals). |
Ce returnează
contentToString: un String. contentEquals: true dacă tablourile au același conținut.
Exemple
Exemplul 1: Afișare corectă a unui tablou
Prima linie arată ce face toString() (doar începutul, pentru că adresa diferă la fiecare rulare). A doua arată elementele.
fun main() {
val note = intArrayOf(9, 7, 10)
println(note.toString().take(3) + "...")
println(note.contentToString())
val tabla = arrayOf(intArrayOf(1, 0), intArrayOf(0, 1))
println(tabla.contentDeepToString())
}
Rezultat
[I@...
[9, 7, 10]
[[1, 0], [0, 1]]
Exemplul 2: Același obiect față de același conținut
Cele două tablouri au aceleași valori, dar sunt obiecte diferite, așa că === (același obiect) dă false. Doar contentEquals compară valorile. Pe tablouri, == face același lucru ca ===; de aceea compilatorul avertizează când îl scrii.
fun main() {
val raspunsuriCorecte = arrayOf("A", "C", "B", "D")
val raspunsuriAna = arrayOf("A", "C", "B", "D")
val raspunsuriIon = arrayOf("A", "B", "B", "D")
println(raspunsuriCorecte === raspunsuriAna)
println(raspunsuriCorecte contentEquals raspunsuriAna)
println(raspunsuriCorecte contentEquals raspunsuriIon)
}
Rezultat
false
true
false
Greșeli frecvente
- Compari tablouri cu
==și primeștifalsedeși au aceleași valori (compilatorul dă și un avertisment). FoloseștecontentEqualssau transformă-le în liste. - Folosești
contentToString()pe un tablou de tablouri și obții adrese pentru cele interioare. FoloseștecontentDeepToString().
Comenzi înrudite
arrayOf: Creează un tablou (Array) cu dimensiune fixă din elementele date; intArrayOf creează un tablou de Int primitive.Array.toList: Transformă un tablou într-o listă nouă, doar pentru citire, cu aceleași elemente.Iterable.joinToString: Lipește elementele într-un singur text, cu separatorul ales, prefix, sufix și, opțional, o transformare.