如何为Collection的所有字段分配公共值?

时间:2013-04-23 07:25:06

标签: java collections apache-commons-collection

我有一个名为Employee的POJO类,带有empName&薪水。我有一个Employee集合作为具有员工详细信息的对象。现在我想将特定字段的值重置为某个常用值。在这种情况下,我想为列表中的所有员工项目分配工资为“0”。

List<Employee> empList;

public class Employee{
    private String empName = "";
    private int empSalary = "";
}

而不是使用For / Foreach迭代员工列表,并为列表中的所有项目分配所需的值。

使用任何CollectionUtils(Apache commons或任何其他)是否有任何简单有效的方法来实现相同的目的。

3 个答案:

答案 0 :(得分:5)

从Java 7开始,对于集合的“批量”更新没有简洁的方法。希望Java 8会更好,但是现在我建议查看像guava这样的库:http://code.google.com/p/guava-libraries/wiki/FunctionalExplained

答案 1 :(得分:2)

作为类变量的工资将自动初始化为其默认值0。一旦创建了对象,就会发生这种情况,而不管它是否存在于某个集合中。

如果你想要一些其他常用值,你可以在构造函数中适当地初始化它。

如果要在创建对象并将其添加到集合后修改对象的属性,则除了迭代集合并显式设置值之外别无其他方法。

答案 2 :(得分:2)

我相信你可以使用Commons Collections(你建议使用它)来做到这一点:

CollectionUtils.forAllDo(empList, new Closure() {
    public void execute(Object empObject) {
        Employee emp = (Employee)empObject;
        emp.setEmpSalary(salaryValueToSet);
    }
});