我想为对象的字段设置值,以便它首先获取该字段的先前值并向其附加一些内容,然后将其设置为该字段。
在 LambdaJ forEach
中,我们可以这样做:
forEach(myCollection).setFieldValue("someValue");
但我需要的是:
forEach(myCollection).setFieldValue(getFieldValue() + "someValue");
在 LambdaJ 中可以吗?
最佳答案
我知道您问过有关 LambdaJ 的问题,我很好奇这样做是因为这是一个常见问题。
我对我所做的结果感到惊讶:
forEach(list).setName(on(User.class).getName() + "someValue");
我认为这将是您问题的答案。
因此,我通过使用 Guava 函数式方式尝试了一种不同的方法。它可以为您工作,所以我会发布答案(但如果您不同意,我可以删除它):
Guava 函数式方法:
@Test
public void test_applyPreviousValue() {
List<User> filteredList = Lists.newArrayList(new User("Fede", 20), new User("Peter", 12), new User("John", 41));
Function<User, User> getType = new Function<User, User>() {
public User apply(User input) {
input.setName(input.getName()+"someValue");
return input;
}
};
Collection<User> result = Collections2.transform(filteredList, getType);
System.out.println(result);
}
希望有所帮助
关于java - LambdaJ forEach 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19722880/