web-dev-qa-db-fra.com

Java ArrayList - Vérifie si la liste est vide

Comment puis-je vérifier si une liste est vide? Si tel est le cas, le système doit donner un message indiquant la liste est vide. Sinon, le système doit donner un message disant la liste n'est pas vide. Les utilisateurs peuvent entrer des chiffres, -1 pour arrêter le programme. C'est le code que j'ai maintenant, mais cela ne fonctionne pas, il dit toujours "La liste n'est pas vide".

import Java.util.*;
import javax.swing.JOptionPane;

public class ArrayListEmpty 
{
    public static void main(String[] args) 
    {
        List<Integer> numbers = new ArrayList<Integer>();
        int number;
        do {
            number = Integer.parseInt(JOptionPane.showInputDialog("Enter a number (-1 to stop)"));
            numbers.add(number);
        } while (number != -1);
        giveList(numbers);
    }

    public static void giveList(List<Integer> numbers)
    {
        if (numbers != null)
            JOptionPane.showMessageDialog(null, "List isn't empty");
        else
            JOptionPane.showMessageDialog(null, "List is empty!");
    }
}
57
STheFox

Aussi simplement que:

if (numbers.isEmpty()) {...}

Notez qu’un rapide coup d’œil à la documentation vous aurait donné cette information.

165
assylias

Vous devriez utiliser la méthode listName.isEmpty()

18
Marcin Szymczak

Votre problème initial était que vous vérifiiez si la liste était nulle, ce qui ne le serait jamais parce que vous l'avez instanciée avec List<Integer> numbers = new ArrayList<Integer>();. Cependant, vous avez mis à jour votre code pour qu'il utilise la méthode List.isEmpty() afin de vérifier correctement si la liste est vide.

Le problème est que vous n’envoyez jamais une liste vide à giveList(). Dans votre boucle Do-While, vous ajoutez un nombre saisi à la liste, même s'il est égal à -1. Pour empêcher l’ajout de -1, modifiez la boucle do-while pour n’ajouter que des nombres s’ils ne sont pas -1. Ensuite, la liste sera vide si le premier numéro saisi par l'utilisateur est -1.

do {
    number = Integer.parseInt(JOptionPane.showInputDialog("Enter a number (-1 to stop)"));
    /* Change this line */
    if (number != -1) numbers.add(number);
} while (number != -1);
3
jonhopkins

De nos jours, la bonne pratique consiste à utiliser CollectionUtils à partir d’Apache Commons ou de Spring Framework.

CollectionUtils.isEmpty(list))
1
FazoM

Alternativement, vous pouvez aussi vouloir vérifier par la méthode .size (). La liste qui n'est pas vide aura une taille supérieure à zéro

if (numbers.size()>0){
//execute your code
}
0
J_fruitty