【发布时间】:2020-01-13 03:25:42
【问题描述】:
如何使用 List 在我的模型中添加每个属性值?这就是我的工作
这是我的对象:Student.java
public class Student {
private String userName;
private String firstName;
private boolean isActive;
// skip the getter setter
}
我确实调用数据库来获取学生列表,并且我想根据条件将所有用户的活动标志设置为真或假
我的模拟数据看起来像
Student studentList = new Student();
Student student1 = new Student();
student1.setUserName("skol");
student1.setFirstName("soumya");
studentList.add(student1);
Student student2 = new Student();
student1.setUserName("vrac");
student1.setFirstName("vivek");
studentList.add(student2);
所以现在不进行迭代我想将所有 isActive 标志设置为 true,在 java 中可以吗?
现在我正在做类似的事情
studentList.parallelStream.forEach(stu -> {
stu.setIsActive(true);
}
)
【问题讨论】:
-
将静态添加到“isActive”。这将导致所有学生“共享”该单个字段。
-
在流上调用
forEach正在迭代。与for循环的效果相同。 -
您认为流的工作原理是什么?他们无法在不迭代的情况下神奇地更改列表中的所有内容,它只是为您编写 for 循环。不,它不能神奇地跨多个内核并行执行 - 除非 N 非常大,否则您无论如何都不想这样做,否则设置线程和任务切换所花费的时间将超过并行化所获得的时间。对于一个简单的吸气剂,您需要 N 达到数十万甚至数百万才能获得任何收益。
-
studentList.forEach(stu -> stu.setIsActive(true));在 a) 表现力或 b) 性能方面有什么问题?你真的遇到过任何一种问题吗?唯一让我想知道的是“打电话给数据库以获取学生名单”的事情。数据库中的活动属性是否持久?然后,进行数据库调用以在数据库中的所有记录上设置标志。否则,明确的forEach也没什么问题。
标签: java arraylist java-8 java-stream