我有一个列表,Arraylist<User>
。 User对象具有字段active
。我需要使用活动字段false
更新列表的所有用户对象。
通过列表迭代,我可以更新字段值。我想知道是否有其他方法,使用哪种方法我可以将所有对象活动字段更新为'false'?
答案 0 :(得分:9)
对于java 8,您可以使用流API和lambdas
List<User> users;
users.forEach((u) -> u.setActive(false));
答案 1 :(得分:1)
如果您使用的是Java 8,则可以使用Iterable<E>.forEach(Consumer<? super E> action)
方法,如下所示:
users.forEach((user) -> user.setActive(false));
否则你将不得不使用标准的增强型for循环方法:
for (User user : users) {
user.setActive(false);
}
答案 2 :(得分:0)
如果您没有使用Java8,并且可以使用第三方库,请查看Google Guava库中的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]
}
答案 3 :(得分:0)
这听起来像是函数式编程和Java 8的工作。你可以这样做:
users.forEach(user -> user.setActive(false))
如果您不使用Java 8,则会有类似的库,例如LambdaJ