Java dispose de plusieurs structures et collections de données. L’ensemble de ces collections se trouvent dans le package Java.util.Map. Les 3 grandes catégories de ces collections sont bien connues, ce sont : le Map, le HashMap, et le TreeMap. Dans le tutoriel hasmap de Java, nous vous avons expliqué comment ces collections fonctionnent et comment les utiliser pour développer des applications Big Data. 

Dans ce tutoriel, nous allons aborder en profondeur une autre collection très particulière et très utilisée de Java : Le tableau (ou ArrayList plus formellement). 

La classe ArrayList  de Java fournit la fonctionnalité de tableau redimensionnable. Elle implémente l’interface List qui elle même étend l’interface Collection. Il est donc beaucoup plus flexible que le tableau traditionnel.

ArrayList vs Tableau

En Java, et d’une façon plus général dans les langages de programmation, pour utiliser un tableau, il faut le déclarer et fixer sa taille lors de la déclaration. Par exemple, en Scala, voici comment déclarer un tableau :

val tab = new Array[String] ("a", "b", "c") 

Une fois que le tableau est déclaré, il est difficile de le redimensionner. En Java, c’est la même chose.

char[] letters = { 'a', 'b', 'c', 'd'} ;

L’avantage des tableaux est qu’ils permettent de gérer plusieurs valeur de même type dans une même variable, au lieu de déclarer des variables distinctes pour chaque valeur. Mais leur inconvénient ou insuffisance c’est la fixité de leur dimension. Une fois qu’on a définit un tableau sur un nombre de dimension, il est assez pénible de le modifier tout au long de vos programmes.

C’est pourquoi pour résoudre ce problème, la classe ArrayList de Java a été mise sur point. Elle permet de créer des tableaux redimensionnables.

Contrairement aux tableaux, les ArrayList peuvent ajuster automatiquement leur capacité lorsque vous y ajoutez ou supprimez des éléments. C’est pourquoi on les appelle aussi les tableaux dynamiques.

Création d’une ArrayList

Pour pouvoir utiliser la collection ArrayList, il faut d’abord l’importer du package java.util. Une fois que cela est fait, vous pouvez créer l’ArrayList selon la syntaxe suivante :

ArrayList<Type> maListe= new ArrayList<>();

Note : Type représente le type des éléments qui seront dans la liste. Ainsi vous pouvez avoir un ArrayList d’entiers ou de chaînes de caractères. Par exemple :

ArrayList<Integer> nombres= new ArrayList<>();
ArrayList<String>  mots= new ArrayList<>();

Voici un exemple complet qui illustre l’utilisation de l’ArrayList :

public class Programme {

    public static void main(String[] args){

        // création de l'ArrayList
        ArrayList<String> jours = new ArrayList<>();
        // Ajout d'éléments dans l'ArrayList
        jours.add("Lundi");
        jours.add("Mardi");
        jours.add("Mercredi");
        jours.add("Jeudi");
        jours.add("Vendredi");
        jours.add("Samedi");
        jours.add("Dimanche");

        System.out.println("Les jours de la semaine: " + jours);
		
      }
	  
}

Le code produit l’affichage suivant

Les jours de la semaine: [Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche]

Vous avez vu que dans l’exemple, nous avons rajouté facilement des éléments dans le tableau, alors que sa dimension à la base était nulle. C’est cela le principal intérêt des ArrayList devant le type classique Array.

Opérations de base sur les ArrayList

Voici quelques méthodes efficaces pour manipuler la collection ArrayList :

  • add(E e) : permet d’ajouter un élément  à un arraylist.
  • get(int inddex) : retourne l’élément à la position index de la liste.
  • set(int index, E e ) :  remplace l’élément à la position index par l’élément e .
  • remove(int index) : supprime l’élément à la position index.

Voici un exemple complet d’utilisation de la collection avec ces méthodes :

public class Programme {

    public static void main(String[] args){

        // création de l'ArrayList
        ArrayList<String> outils = new ArrayList<>();
        // Ajout d'éléments dans l'ArrayList
        outils.add("hadoop");
        outils.add("Scala");
        outils.add("Spark");

        System.out.println(outils);  //affiiche [hadoop, Scala, Spark]
        System.out.println(outils.get(2));  // affiche Spark
        outils.set(1, "Java");

        System.out.println(outils);//affiiche [hadoop, Java, Spark]
        outils.remove(1);

        System.out.println( outils);  //affiiche [hadoop, Spark]

    }
	  
}

Pour plus de détails sur la façon d’utiliser les méthodes de l’ArrayList, consultez la documentation officielle de Java.

Autres opérations intéressantes du tableau multidimensionnel de Java

En dehors de ses méthodes de base, vous pouvez mener d’autres opérations intéressantes comme l’itération, la conversion en string ou le trie.

Vous pouvez itérer les éléments d’un ArrayList pour facilement lire son contenu. Pour ce faire, il vous suffit d’utiliser une boucle For classique, comme illustré dans cet exemple :

public class Programme {

    public static void main(String[] args){

        // création de l'ArrayList
        ArrayList<String> outils = new ArrayList<>();
        // Ajout d'éléments dans l'ArrayList
        outils.add("hadoop");
        outils.add("Scala");
        outils.add("Spark");

        //itération sur la liste outil
        //affiche hadoop , Scala , Spark , 
        for(String outil: outils){
          System.out.print(outil + " , ");
		  
        }
    }
	  
}

En plus de l’itération, vous pouvez utiliser la méthode toString() de la classe pour la convertir en chaîne de caractères.

public class Programme {

    public static void main(String[] args){

        // création de l'ArrayList
        ArrayList<String> outils = new ArrayList<>();
        // Ajout d'éléments dans l'ArrayList
        outils.add("hadoop");
        outils.add("Scala");
        outils.add("Spark");

        System.out.println("ArrayList: "+ outils); //affiche ArrayList: [hadoop, Scala, Spark]

        String str = outils.toString();

        System.out.println("String: "+ str); // [hadoop, Scala, Spark]

      }
	  
}

Vous pouvez aussi effectuer facilement des tris de tableau. Pour ce faire, utilisez la méthode sort() de Collections.

public static void main(String[] args){

     // création de l'ArrayList
     ArrayList<String> outils = new ArrayList<>();
     // Ajout d'éléments dans l'ArrayList
     outils.add("hadoop");
     outils.add("Scala");
     outils.add("Spark");
    
     System.out.println("ArrayList avant trie :"+  outils); //affiche //ArrayList avant trie :[hadoop, Scala, Spark]
	//Trie
     Collections.sort(outils);
    
     System.out.println("ArrayList après trie :"+  outils); //affiche //ArrayList après trie:[Scala, Spark, hadoop]
    
}

Voilà ! Nous sommes arrivés au terme de ce tutoriel synthétique sur l’utilisation de l’ArrayList. A la différence des autres classes de la collection Java.utils.Map, elle permet de travailler avec tableaux facilement redimensionnables. Elle dispose de plusieurs méthodes efficaces qui permettent de gérer la flexibilité de son dimensionnement, et hérite des méthodes des collections de Java. Elle sera donc un bon outil pour manipuler les données dans vos applications Big Data. Si vous souhaitez aller plus loin dans l’utilisation des abstractions de données ou la programmation Java en général, nous vous recommandons les articles suivants :

Vous pouvez également suivre cette mini-formation d’une heure que nous vous offrons gratuitement sur Scala, car comme nous l’affirmons beaucoup sur ce site, scala est le langage qui fournit les meilleures collections pour le Big Data. Pour télécharger votre formation, cliquez sur le bouton dans le formulaire qui suit et entrez-y votre email personnel. Vous le recevrez directement dans votre boîte de réception email.


Juvénal JVC

Juvénal est spécialisé depuis 2011 dans la valorisation à large échelle des données. Son but est d'aider les professionnels de la data à développer les compétences indispensables pour réussir dans le Big Data. Il travaille actuellement comme Lead Data Engineer auprès des grands comptes. Lorsqu'il n'est pas en voyage, Juvénal rédige des livres ou est en train de préparer la sortie d'un de  ses livres. Vous pouvez télécharger un extrait de son dernier livre en date ici : https://www.data-transitionnumerique.com/extrait-ecosystme-hadoop/

>