Java ArrayList – 检查列表是否为空

如何检查列表是否为空? 如果是这样,系统必须给出一个消息,说明列表是空的 。 如果不是,系统必须给出一个消息,说明列表不是空的 。 用户可以input数字, -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!"); } } 

简单地说:

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

请注意,快速浏览文档会给你提供这些信息。

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

你原来的问题是你正在检查列表是否为空,它永远不会因为你用List<Integer> numbers = new ArrayList<Integer>();来实例化它List<Integer> numbers = new ArrayList<Integer>(); 。 但是,您更新了代码以使用List.isEmpty()方法来正确检查列表是否为空。

现在的问题是,你实际上从来没有发送一个空列表给giveList() 。 在你的do-while循环中,你可以添加任何input号码到列表中,即使它是-1。 为了防止添加-1,请将do-while循环更改为仅添加数字(如果它们不是-1)。 然后,如果用户的第一个input号码是-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); 

或者,您也可以使用.size()方法进行检查。 不为空的列表将具有大于零的大小

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