HOWTO · Java
Comment renvoyer une ArrayList en Java
Dans ce tutoriel, nous renverrons une ArrayList depuis une fonction en Java.
Sur cette page
Une ArrayList est une collection redimensionnable du package java.util de Java. Pour en renvoyer une, déclarez un type de retour ArrayList, créez et remplissez la collection, puis renvoyez-la avec return. En Java, les fonctions déclarées dans une classe sont appelées des méthodes. Choisissez une méthode d’instance lorsque l’opération utilise l’état d’un objet, ou une méthode statique lorsque l’appelant doit utiliser la classe directement. Si les appelants n’ont besoin que d’opérations de liste générales, une méthode peut déclarer l’interface List<T> comme type de retour tout en renvoyant un objet ArrayList<T>.
Renvoyer une ArrayList depuis une fonction non statique en Java
Une méthode non statique appartient à une instance de sa classe. L’appelant construit d’abord cette classe, puis invoque la méthode sur l’objet résultant. Dans cet exemple, ClassB crée une liste d’entiers et Main reçoit la collection renvoyée dans une variable déclarée comme List<Integer>. L’interface List est un type de variable utile lorsque l’appelant n’a besoin que d’opérations de liste, tandis que la méthode peut déclarer le type concret ArrayList<Integer>.
Le programme complet utilise une seule classe publique, avec ClassB imbriquée à l’intérieur, afin que l’exemple puisse être enregistré et compilé comme un seul fichier source Java. La méthode main est l’appelant : elle crée ClassB, invoque myNumbers() via m1 et affiche les valeurs renvoyées.
import java.util.ArrayList;
import java.util.List;
public class Main {
static class ClassB {
public ArrayList<Integer> myNumbers() {
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(10);
numbers.add(15);
numbers.add(30);
return numbers;
}
}
public static void main(String[] args) {
ClassB m1 = new ClassB();
List<Integer> listInMain = m1.myNumbers();
System.out.println("The List is " + listInMain);
}
}
The List is [10, 15, 30]
Le type générique Integer décrit les éléments contenus dans la collection. La méthode crée une nouvelle liste à chaque appel, ajoute trois nombres et renvoie cette liste. L’appelant peut lire la collection renvoyée, la parcourir ou y ajouter des valeurs. La méthode renvoie une référence à la liste ; elle ne convertit pas la collection en tableau. Comme l’appelant reçoit ce même objet, les modifications apportées via la référence renvoyée affectent la liste créée par la méthode.
Renvoyer une ArrayList depuis une fonction statique en Java
Une méthode statique appartient à la classe plutôt qu’à un objet particulier. Appelez-la avec le nom de la classe et le nom de la méthode, de sorte que cette version ne construit pas ClassB. C’est utile lorsque le travail de la méthode ne dépend pas de champs stockés sur une instance spécifique. Son corps crée et renvoie toujours une ArrayList de la même manière que la méthode d’instance.
Ce programme autonome utilise les mêmes données afin que vous puissiez vous concentrer sur la forme de l’appel. Comme la méthode est déclarée static, Main l’invoque sous la forme ClassB.myNumbers(). La valeur renvoyée est affectée à une variable List<Integer> et affichée par l’appelant.
import java.util.ArrayList;
import java.util.List;
public class Main {
static class ClassB {
public static ArrayList<Integer> myNumbers() {
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(10);
numbers.add(15);
numbers.add(30);
return numbers;
}
}
public static void main(String[] args) {
List<Integer> listInMain = ClassB.myNumbers();
System.out.println("The List is " + listInMain);
}
}
The List is [10, 15, 30]
Utilisez une méthode d’instance lorsque l’opération a besoin de l’état d’un objet, et une méthode statique lorsqu’elle est au niveau de la classe et n’a besoin d’aucune instance. Dans les deux cas, assurez-vous que le type de retour déclaré est compatible avec la valeur et affectez le résultat à un type compatible au point d’appel. L’instruction return termine la méthode et transmet la liste remplie à l’appelant, qui peut utiliser les opérations normales de List.