2017-06-06 10 views
0

には、Iterableのすべてのオブジェクトのプロパティを指定した値に設定するスマートな方法がありますか?Iterableのすべてのオブジェクトのプロパティを設定する

は、私はそのように見えるクラスSystemUserを持っている:

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

と同様に反復処理可能なオブジェクトを生成し、別のクラス:

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

は、私はすべてのオブジェクトの属性「パスワード」を設定することができます繰り返さずにnullにするIterable?

ありがとうございます!

+0

使用

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(); } })); 

を使用して、一般的な

public static <T> void apply(Iterable<T> iterable, Function<T, Void> function) { for (T input : iterable) function.apply(input); } 

を用い

使用率。どのように反復処理を行わずに反復可能な要素のすべての要素を調べることができますか? –

+0

最初に 'String'にパスワードを入れてはいけません。 'char []'にパスワードを読み込んですぐにハッシュし、 'char []'を上書きして元のパスワードのトレースを消去する必要があります。 –

+0

opがインラインで反復して設定したいと思うかもしれません –

答えて

3

パスワードをIterableに統合する前にパスワードを設定していない限り、パスワードはnullに設定されています(参照用にはinitial value)。

合併前に1つまたはいくつかのパスワードを設定した場合は、標準forステートメントまたはforEachとストリームのいずれかを使用して反復する必要があります。

0

アイテムに機能を適用する方法すべての要素を繰り返して値を変更する必要があります。 GUAVAまたはforeachのようにこの目的のために利用できるサードパーティのライブラリがたくさんあります。グアバのために、各反復処理可能アンが繰り返されることを意味する

// 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())); 
関連する問題