设置Iterable的所有对象的属性

时间:2017-06-06 17:48:29

标签: java

有一种聪明的方法可以将Iterable的所有对象的属性设置为指定值吗?

我有一个类SystemUser,看起来像这样:

class SystemUser{
  private String name;
  private String password;
  ...
}

和另一个生成Iterable对象的类,如:

public Iterable<SystemUser> getUsers(){
   ...
   return users;
}

我可以设置属性&#34;密码&#34;如果没有迭代,Iterable的所有对象都为null?

谢谢!

2 个答案:

答案 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()) );