Java ArrayList-vérifie si la liste est vide

Comment puis-je vérifier si une liste est vide? Si c'est le cas, le système doit donner un message indiquant que List est vide . Si ce n'est pas le cas, le système doit donner un message indiquant que List N'est pas vide. Les utilisateurs peuvent entrer des numéros, -1 pour arrêter le programme. C'est le code 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!");
    }
}
54
demandé sur assylias 2013-01-03 22:50:36

4 réponses

Aussi simplement que:

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

Notez qu'un rapide coup d'oeil à la documentation aurait donné l'information.

158
répondu assylias 2013-01-03 18:51:17

, Vous devez utiliser la méthode listName.isEmpty()

17
répondu Marcin Szymczak 2013-01-03 18:53:10

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

Le problème maintenant est que vous n'envoyez jamais réellement une liste vide à giveList(). Dans votre boucle do-while, vous ajoutez n'importe quel numéro d'entrée à la liste, même s'il est -1. Pour éviter que -1 ne soit ajouté, Modifiez la boucle do-while pour n'ajouter que des nombres s'ils ne le sont pas -1. Ensuite, la liste sera vide si le premier numéro d'entrée de 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
répondu jonhopkins 2013-01-03 19:12:12

Vous pouvez également vérifier par le .méthode size (). La liste n'est pas vide aura une taille supérieure à zéro

if (numbers.size()>0){
//execute your code
}
0
répondu J_fruitty 2017-11-14 05:19:53