java android中对list的判定为空的条件

笔者在用郭神的litepal数据库时,用到了遍历数据库查用户名:

List<User> users = LitePal.select("username").find(User.class);
                Log.e(TAG, "onClick: " + users);
                if (users != null && users.size() != 0) {//如果列表(users这个list)不为空,并且列表的size大于0,则可以用foreach遍历
                    for (User user : users) {
                        if (strusername.equals(user.getUsername())) {
                            Toast.makeText(RegistActivity.this, "该用户名已经注册", Toast.LENGTH_SHORT).show();
                            return;
                        } else {
                            //存储用户名密码
                            user.setUsername(strusername);
                            user.setPassword(strpassword);
                            user.save();
                            Toast.makeText(RegistActivity.this, "创建用户成功", Toast.LENGTH_SHORT).show();
                            finish();
                        }
                    }
                } else {
                    //users数据为空,存数据
                    User user = new User();
                    user.setUsername(strusername);
                    user.setPassword(strpassword);
                    user.save();
                    Toast.makeText(RegistActivity.this, "创建用户成功", Toast.LENGTH_SHORT).show();
                    finish();
                }

本来是没有写

 if (users != null && users.size() != 0)

这个判断条件的,结果foreach(增强for循环)遍历数据库这部分根本就不跑,直接不跑for循环了。
因为刚对User建立users表时,users表内并没有数据,所以for循环里建立的User的对象user没办法遍历一个没有数据的users表来getUsername。所以说不要遍历空表!!!!如果表内为空就存数据进去!

那么为什么对users这个list判空操作要这么写呢?

当需要对一个list进行判空操作时我们可使用如下两个语句:
判断为空:

if (list == null || list.size() == 0) {}

判断不为空:


if (list != null && list.size() != 0) {}  
或者写
if(list!=null&&list.size()>0){}

很多人会以为如果满足 list == null ,这个list就为空了,那么为什么还要再使用另一个条件 list.size == 0 呢?

首先我们需要先弄懂这两个判断条件分别代表什么含义:

  1. list == null :用于判断list有没有初始化,也就是list是否被赋为null,如 List list = null; ,满足该条件的话list中是没有数据的

  2. list.size == 0 :用于判断list中是否有数据,满足该条件时list中也是没有数据的

如果只使用 list == null :一旦list进行了初始化 List list2 = new ArrayList();
,此时list就不再为null了,但list内并没有数据。如果只使用 list == null 来判断是否为空的话,就会判断错误。

如果只使用 list .size == 0
:如果list并没有进行初始化,使用该条件时会报空指针错误,就无法达到判空的目的。因此在使用该条件时,一定要判断list是否进行了初始化

总结:

在对list进行判空时,需要使用两个条件:先使用 list == null判断list是否初始化后,再使用 list .size == 0判断是否为空。

双重判断保险嘛

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值