有一种聪明的方法可以将Iterable的所有对象的属性设置为指定值吗?
我有一个类SystemUser,看起来像这样:
class SystemUser{
private String name;
private String password;
...
}
和另一个生成Iterable对象的类,如:
public Iterable<SystemUser> getUsers(){
...
return users;
}
我可以设置属性&#34;密码&#34;如果没有迭代,Iterable的所有对象都为null?
谢谢!
答案 0 :(得分:3)
除非您在将密码合并到Iterable
之前已经设置了密码,否则凭借initial value的参考资料,其密码(和名称)已设置为null
如果您在合并之前为其中一个或任意数量的密码设置了密码,则必须通过标准for
语句或使用forEach
和流来进行迭代。
答案 1 :(得分:0)
任何方式将任何函数应用于项目您需要迭代所有元素并更改值。有很多第三方库可用于此目的,如 GUAVA或上面提到的foreach。
使用泛型
public static <T> void apply(Iterable<T> iterable, Function<T, Void> function) {
for (T input : iterable)
function.apply(input);
}
使用番石榴
final List<String> list = Arrays.asList("race", "box");
final List<String> transformed =
Lists.newArrayList(Iterables.transform(list, new Function<String, String>() {
@Override
public String apply(final String input) {
return new StringBuilder().append(input).append("car").toString();
}
}));
使用for-each
// Suppose that I have already init the list of car
List<Car> cars = //...
List<String> names = new ArrayList<String>();
// LAMBDA EXPRESSION
cars.forEach( (car) -> names.add(car.getName()) );