Java 设置Iterable的所有对象的属性

Java 设置Iterable的所有对象的属性,java,Java,是否有一种聪明的方法将Iterable的所有对象的属性设置为指定值 我有一个类SystemUser,看起来像: class SystemUser{ private String name; private String password; ... } 以及另一个生成Iterable对象的类,如: public Iterable<SystemUser> getUsers(){ ... return users; } public Iterable getUs

是否有一种聪明的方法将Iterable的所有对象的属性设置为指定值

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

class SystemUser{
  private String name;
  private String password;
  ...
}
以及另一个生成Iterable对象的类,如:

public Iterable<SystemUser> getUsers(){
   ...
   return users;
}
public Iterable getUsers(){
...
返回用户;
}
我可以在不迭代的情况下将Iterable的所有对象的属性“password”设置为null吗


谢谢

除非您在将它们合并到该
Iterable
中之前已经设置了密码,否则它们的密码(和名称)已根据for reference设置为
null


如果您在合并前已为其中一个或任意多个设置了密码,则必须通过标准的
for
语句或使用
forEach
和streams进行迭代。

除非您在将它们合并到
Iterable
之前已设置了密码,否则必须重复它们的密码(和名称)已通过for reference设置为
null


如果在合并前设置了一个或任意个密码,则必须通过标准<代码>对语句进行迭代,或者通过使用<代码>前缀和流> /p> < p>任何方式将任何函数应用到项中,都需要遍历所有元素并更改值。ty库可用于此目的,如 番石榴或如上所述

使用泛型的Util

public static <T> void apply(Iterable<T> iterable, Function<T, Void> function) {
    for (T input : iterable)
        function.apply(input);
}
publicstaticvoidapply(Iterable Iterable,Function){
for(T输入:iterable)
函数。应用(输入);
}
用番石榴

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();
        }
    }));
final List=Arrays.asList(“种族”、“盒子”);
最终列表已转换=
list.newArrayList(Iterables.transform(list,new Function()){
@凌驾
公共字符串应用(最终字符串输入){
返回新的StringBuilder().append(输入).append(“car”).toString();
}
}));
分别使用

// 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()) );
//假设我已经初始化了汽车列表
列出汽车=/。。。
列表名称=新的ArrayList();
//LAMBDA表达式
cars.forEach((car)->names.add(car.getName());

任何将函数应用于项的方法都需要迭代所有元素并更改值。有很多第三方库可用于此目的,如 番石榴或如上所述

使用泛型的Util

public static <T> void apply(Iterable<T> iterable, Function<T, Void> function) {
    for (T input : iterable)
        function.apply(input);
}
publicstaticvoidapply(Iterable Iterable,Function){
for(T输入:iterable)
函数。应用(输入);
}
用番石榴

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();
        }
    }));
final List=Arrays.asList(“种族”、“盒子”);
最终列表已转换=
list.newArrayList(Iterables.transform(list,new Function()){
@凌驾
公共字符串应用(最终字符串输入){
返回新的StringBuilder().append(输入).append(“car”).toString();
}
}));
分别使用

// 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()) );
//假设我已经初始化了汽车列表
列出汽车=/。。。
列表名称=新的ArrayList();
//LAMBDA表达式
cars.forEach((car)->names.add(car.getName());

一个Iterable意味着要被迭代。你怎么能在不迭代的情况下遍历Iterable的所有元素?你首先不应该在
字符串中输入任何密码。你应该将密码读入
字符[]
,立即对其进行哈希运算,然后覆盖
字符[]
删除原始密码的任何痕迹。可能op想要一种内联方式来迭代和设置Iterable,Iterable就是要迭代的。你怎么能不迭代就遍历Iterable的所有元素呢?你首先不应该将任何密码放入
字符串中。你应该将密码读入
字符[]
,立即对其进行散列,然后覆盖
char[]
以删除原始密码的任何痕迹。也许op需要一种内联方式来迭代和设置它