判断集合元素是否为空的两种方式
测试代码如下:
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; }
使用这段代码,如果
- 页面没有传值过来,userList1为空;
- 页面传值过来,就会有一个ArrayList的对象引用
经过我的跟踪调试,有值时strut2内部会自动实例化ArrayList类并把页面的值传入。无值时不进行操作。 因为我没有传值过去,所以userList1实际上是没有值的。此时我无论使用isEmpty还是使用size都是无作用的 在理解了之后在此进行记录。