将具有内容列表的对象与另一个对象进行比较

Compare the object with a list of contents to another object

我有一个包含内容列表的对象和另一个包含内容但没有列表的对象,如下面的代码

List<LoginInformation> allUsersLoginInfo
LoginInformation loginInformation

现在我想比较这两个,看allUsersLoginInfo中是否存在loginInformation的元素

LoginInformation 是一个模型 class。

它有名字和卷号。

因此,allUserLoginInfo 是一个列表,其中包含 Name 和 Rollnumber 的多个值。

现在,我想比较并查看 allUserLoginInfo 中是否存在 loginInformation 的任何值(即 Name 或 RollNumber 的值)然后给我 true 否则为 false 并指出没有值相等。

提前致谢

你可以这样做:

allUsersLoginInfo.contains(loginInformation);

但您需要正确覆盖 class LoginInformation 中的 equals 方法,否则,列表将永远找不到该元素并将 return假...

lUsersLoginInfo.contains(loginInformation)

可能是您要找的 如果列表中有很多信息,我建议改用集合。但是你最好不要将密码保存在用户信息中...

您可以使用 Stream#anyMatch 来完成手头的任务。

if(allUsersLoginInfo.stream().anyMatch(m -> m.getName().equals(loginInformation.getName())
                   || m.getRollNumber() == loginInformation.getRollNumber())){
        //exists
}else{
      // does not exist
}

在 1.8

之前,您可以将 Apache Commons 用于 java

此示例查找 allUserLoginInfo 中是否存在 loginInformation 的任何值(即 Name 或 RollNumber 的值):

LoginInformation res = CollectionUtils.find(allUsersLoginInfo, new Predicate<LoginInformation >() {
        @Override
        public boolean evaluate(LoginInformation o) {
            return o.getName ().equals(yourloginInformation.getName()) ||  o.getRollnumber () == yourloginInformation.getRollnumber();
        }
    });

对于java1.8使用奥敏答案