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

时间:2017-05-31 14:48:08

标签: java java-ee comparator compareto object-comparison

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

List<LoginInformation> allUsersLoginInfo
LoginInformation loginInformation

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

LoginInformation是一个模型类。

它有名字和卷号。

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

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

提前致谢

4 个答案:

答案 0 :(得分:0)

你可以这样做:

allUsersLoginInfo.contains(loginInformation);

但你需要在类 LoginInformation 中正确覆盖equals方法,否则,列表将永远不会找到该元素并返回false ...

答案 1 :(得分:0)

lUsersLoginInfo.contains(loginInformation)

可能是您正在寻找的东西 如果列表中有很多信息,我建议使用一组。但你最好不要在用户信息中保存密码......

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

您可以将Apache Commons用于1.8之前的java

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

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

对于java 1.8,请使用Aominè回答