Java 更新列表中的所有元素而不使用循环

Java 更新列表中的所有元素而不使用循环,java,collections,arraylist,Java,Collections,Arraylist,我有一个列表,Arraylist。用户对象的字段处于活动状态。我需要用活动字段false更新列表中的所有用户对象 通过遍历列表,我可以更新字段值。我想知道是否有其他方法可以将所有对象活动字段更新为“false”?对于java 8,您可以使用流API和lambdas List<User> users; users.forEach((u) -> u.setActive(false)); 列出用户; users.forEach((u)->u.setActive(false)); 如

我有一个列表,
Arraylist
。用户对象的字段
处于活动状态
。我需要用活动字段
false
更新列表中的所有用户对象


通过遍历列表,我可以更新字段值。我想知道是否有其他方法可以将所有对象活动字段更新为“false”?

对于java 8,您可以使用流API和lambdas

List<User> users;
users.forEach((u) -> u.setActive(false));
列出用户;
users.forEach((u)->u.setActive(false));

如果您使用的是Java 8,则可以使用以下方法:

users.forEach((user) -> user.setActive(false));
否则,您必须使用标准的增强for循环方法:

for (User user : users) {
    user.setActive(false);
}

如果您不使用Java8,并且可以使用第三方库,请查看库中的Collection2.transform()函数

以下是一个例子:

public class Main {

    public static void main(String[] args) throws Exception {

        List<Boolean> myList = new ArrayList<Boolean>();
        myList.add(true);
        myList.add(true);
        myList.add(true);
        myList.add(true);
        myList.add(true);

        System.out.println(Collections2.transform(myList, new Function<Boolean, Boolean>() {
            @Override
            public Boolean apply(Boolean input) {
                return Boolean.FALSE;
            }
        }));
    }//outputs [false, false, false, false, false]
}
公共类主{
公共静态void main(字符串[]args)引发异常{
List myList=new ArrayList();
myList.add(true);
myList.add(true);
myList.add(true);
myList.add(true);
myList.add(true);
System.out.println(Collections2.transform(myList,new Function()){
@凌驾
公共布尔应用(布尔输入){
返回Boolean.FALSE;
}
}));
}//输出[假,假,假,假,假,假]
}

这听起来像是函数式编程和Java 8的工作。你可以这样做:

users.forEach(user -> user.setActive(false))

如果您不使用Java 8,也有类似的库,例如

您使用的是什么版本的Java?基本内容,不重复如何访问和更新其内容?我没有对象将其设置到列表中,我只想更新用户对象的一个字段谢谢您的回答。我想,我会同意的。这也是for循环的一种形式,但这减少了行数。@YaduKrishnan我不担心减少行数,我更关心的是使代码尽可能容易理解。在本例中,我认为lambda语法实现了这一点,但我的观点是,一般来说,使用更多的行来表示某些内容并不一定是坏事。目前,我必须在4个列表中执行类似的代码。在这种情况下,行数急剧增加。