63

如何检查列表是否为空?如果是这样,系统必须给出一条消息说List is empty。如果不是,系统必须给出消息说List is not empty。用户可以输入数字,-1停止程序。这是我现在拥有的代码,但这不起作用,它总是说“列表不为空”。

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!");
    }
}
4

6 回答 6

171

就像:

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

请注意,快速查看文档会为您提供该信息。

于 2013-01-03T18:51:17.923 回答
19

你应该使用方法listName.isEmpty()

于 2013-01-03T18:53:10.360 回答
4

现在的良好做法是使用来自 Apache Commons 或 Spring Framework 的 CollectionUtils。

CollectionUtils.isEmpty(list))
于 2019-07-26T14:41:47.717 回答
3

您最初的问题是您正在检查列表是否为空,因为您使用List<Integer> numbers = new ArrayList<Integer>();. 但是,您已更新代码以使用该List.isEmpty()方法正确检查列表是否为空。

现在的问题是您实际上从未将空列表发送到giveList(). 在您的 do-while 循环中,您将任何输入数字添加到列表中,即使它是 -1。为防止添加 -1,请将 do-while 循环更改为仅添加非 -1 的数字。然后,如果用户的第一个输入数字是-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);
于 2013-01-03T19:12:12.797 回答
1

或者,您可能还想通过 .size() 方法进行检查。非空列表的大小将大于零

if (numbers.size()>0){
//execute your code
}
于 2017-11-14T05:19:53.660 回答
-3

来源:CodeSpeedy 点击了解更多检查 ArrayList 是否为空

import java.util.ArrayList;
public class arraycheck {
public static void main(String args[]){
ArrayList<Integer> list=new ArrayList<Integer>();

    if(list.size()==0){
        System.out.println("Its Empty");

    }
    else
        System.out.println("Not Empty");

   }

}

输出:

run:
Its Empty
BUILD SUCCESSFUL (total time: 0 seconds)
于 2018-10-14T17:24:55.570 回答