8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Java List.contains(字段值等于 x 的对象)

Xavier 2月前

249 0

我想检查 List 中是否包含具有特定值的字段的对象。现在,我可以使用循环来遍历并检查,但我很好奇是否有更高效的代码...

我想检查 a 是否 List 包含一个具有特定值的字段的对象。现在,我可以使用循环来遍历并检查,但我很好奇是否有更高效的代码。

类似于;

if(list.contains(new Object().setName("John"))){
    //Do some stuff
}

我知道上面的代码没有任何作用,它只是为了大致演示我想要实现的目标。

另外,需要澄清的是,我不想使用简单循环的原因是,此代码当前将进入循环内部,而循环内部又包含循环。为了便于阅读,我不想继续在这些循环中添加循环。所以我想知道是否有任何简单的替代方案。

帖子版权声明 1、本帖标题:Java List.contains(字段值等于 x 的对象)
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Xavier在本站《class》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 如果你正在使用 Java 8,也许你可以尝试这样的事情:

    public boolean containsName(final List<MyObject> list, final String name){
        return list.stream().filter(o -> o.getName().equals(name)).findFirst().isPresent();
    }
    

    或者你也可以尝试这样的方法:

    public boolean containsName(final List<MyObject> list, final String name){
        return list.stream().map(MyObject::getName).filter(name::equals).findFirst().isPresent();
    }
    

    如果 true 包含 List<MyObject> 名为 的 ,则 MyObject 此方法将返回 name MyObject 每个 执行操作 getName().equals(name) ,那么您可以尝试以下操作:

    public void perform(final List<MyObject> list, final String name){
        list.stream().filter(o -> o.getName().equals(name)).forEach(
                o -> {
                    //...
                }
        );
    }
    

    其中 o 代表一个 MyObject 实例。

    或者,正如评论所建议的(感谢 MK10),您可以使用该 Stream#anyMatch 方法:

    public boolean containsName(final List<MyObject> list, final String name){
        return list.stream().anyMatch(o -> name.equals(o.getName()));
    }
    
返回
作者最近主题: