Les tableaux en Kotlin : n'ayez pas peur, c'est simple
\n\nSi vous passez de Java à Kotlin ou si vous commencez tout juste à apprendre ce langage moderne, la question « comment initialiser un tableau en Kotlin avec des valeurs » se pose presque immédiatement. Sur Stack Overflow, ce sujet a recueilli des milliers de vues — ce qui montre que le sujet est vraiment important.
\n\nBonne nouvelle : Kotlin a rendu le travail avec les tableaux bien plus pratique qu'en Java. Mauvaise nouvelle : il existe plusieurs façons de faire, et les débutants s'y perdent souvent. Décortiquons une fois pour toutes toutes les options d'initialisation d'un tableau Kotlin — du plus simple au plus complexe, avec des exemples de code réels.
\n\n1. La méthode la plus simple : arrayOf()
\n\nLa fonction arrayOf() est votre outil de base. Elle crée un tableau à partir des valeurs transmises, en déterminant automatiquement le type.
// Tableau d'entiers\nval numbers = arrayOf(1, 2, 3, 4, 5)\n\n// Tableau de chaînes\nval fruits = arrayOf("pomme", "banane", "orange")\n\n// Tableau de type mixte (Any)\nval mixed = arrayOf(42, "Kotlin", true)\n\nprintln(numbers.contentToString()) // [1, 2, 3, 4, 5]\nprintln(fruits.contentToString()) // [pomme, banane, orange]\n\n\nImportant : arrayOf() crée un Array<T> — un tableau d'objets. Si vous avez besoin de types primitifs (int, char, boolean) pour des raisons de performance, lisez la suite.
2. Tableaux primitifs : intArrayOf(), doubleArrayOf() et autres
\n\nKotlin propose des fonctions spécialisées pour chaque type primitif. Elles économisent de la mémoire et sont plus rapides :
\n\n// Entiers\nval intArr = intArrayOf(10, 20, 30, 40, 50)\n\n// Nombres à virgule flottante\nval doubleArr = doubleArrayOf(1.5, 2.7, 3.14)\n\n// Valeurs booléennes\nval boolArr = booleanArrayOf(true, false, true)\n\n// Caractères\nval charArr = charArrayOf('K', 'o', 't', 'l', 'i', 'n')\n\n// Octets\nval byteArr = byteArrayOf(0x48, 0x65, 0x6C, 0x6C, 0x6F) // "Hello"\n\nprintln(intArr.joinToString()) // 10, 20, 30, 40, 50\n\n\nListe complète : intArrayOf, doubleArrayOf, floatArrayOf, longArrayOf, shortArrayOf, byteArrayOf, booleanArrayOf, charArrayOf.
Quand les utiliser ? Si vous travaillez avec de grandes quantités de données ou écrivez du code performant — optez pour les tableaux primitifs. Pour les tâches courantes, arrayOf() est tout à fait suffisant.
3. Constructeur de tableau : Array(size) avec une lambda
\n\nLa méthode la plus flexible pour initialiser un tableau en Kotlin est l'utilisation du constructeur avec une expression lambda. Vous définissez la taille et la règle de remplissage :
\n\n// Carrés des nombres de 0 à 4\nval squares = Array(5) { i -> i * i }\nprintln(squares.contentToString()) // [0, 1, 4, 9, 16]\n\n// Tableau de 10 nombres aléatoires\nimport kotlin.random.Random\nval randoms = Array(10) { Random.nextInt(100) }\nprintln(randoms.contentToString()) // [42, 17, 83, 5, 91, ...]\n\n// Tableau de chaînes avec un modèle\nval labels = Array(3) { index -> "Élément #${index + 1}" }\nprintln(labels.contentToString()) // [Élément #1, Élément #2, Élément #3]\n\n\nLa lambda reçoit l'indice de l'élément (de 0 à size-1) et doit retourner une valeur. C'est un outil puissant — vous pouvez remplir un tableau selon n'importe quelle règle, y compris en appelant des fonctions.
\n\n4. arrayOfNulls() — un tableau avec des cellules vides
\n\nParfois, vous devez créer un tableau et le remplir plus tard. Pour cela, il existe arrayOfNulls() :
// Tableau de 5 éléments null\nval nullArray = arrayOfNulls<String>(5)\nprintln(nullArray.contentToString()) // [null, null, null, null, null]\n\n// Remplissage ultérieur\nnullArray[0] = "Premier"\nnullArray[2] = "Troisième"\nprintln(nullArray.contentToString()) // [Premier, null, Troisième, null, null]\n\n\nLe type doit être spécifié explicitement — le compilateur