判断集合元素是否为空的两种方式

测试代码如下:

 List<User> userList = new ArrayList<>();
      //生成三个user对象
      User user = new User();
      user.setName("朱大炮");
      user.setSex("男");
      User user1 = new User();
      user1.setSex("女");
      user1.setName("经香琼");
      User user2 = new User();
      user2.setName("北风光");
      user2.setSex("男");
      //向集合中添加user
      userList.add(user);
      userList.add(user1);
      userList.add(user2);
      System.out.println(userList);
      System.out.println(userList.isEmpty());
      System.out.println(userList.size());

其中 isEmpty()方法的作用是:当集合中不存在任何元素时,返回true

userList.size()方法的作用是:获取当前集合的元素个数。

所以,判断当前元素是否为空可以这样写:

第一种方式
boolean empty = userList.isEmpty();
     if (empty){
       //当元素为空时,执行这里面的代码
     }else{
      //当元素不为空时,执行这里面的代码
     }

第二种方式
 int size = userList.size();
     if(size == 0){
      //当元素为空时,执行这里面的代码
     }else{
      //当元素不为空时,执行这里面的代码
     }
题外

今天在使用struts2框架接受页面参数时,无论使用isEmpty还是使用size控制台都空指针异常,关键代码如下

 private List<User> userList1;
 public List<User> getUserList1() {
  return userList1;
 }

 public void setUserList1(List<User> userList1) {
  this.userList1 = userList1;
 }

使用这段代码,如果

  1. 页面没有传值过来,userList1为空;
  2. 页面传值过来,就会有一个ArrayList的对象引用

经过我的跟踪调试,有值时strut2内部会自动实例化ArrayList类并把页面的值传入。无值时不进行操作。
因为我没有传值过去,所以userList1实际上是没有值的。此时我无论使用isEmpty还是使用size都是无作用的
在理解了之后在此进行记录。

你可能感兴趣的:(java)