私は次のクラスのようなオブジェクトのリストを持っている:更新パラメータ:戻りリストやない
class A {
private String property1;
private String property2;
//Setters && Getters
}
ので、いくつかの操作をした後、私はデフォルト値でリストを更新する必要があります次のようないくつかのロジック:
listOfA.forEach(item -> {
item.setProperty1(findSomething());
}
このロジックは数回繰り返されますので、メソッドにエクスポートすることを検討しています。したがって、私の質問はこのメソッドに関連しています:リストのコピー参照をvoidメソッドで更新するか、返すか、新しいリストを作成して更新する必要がありますか?
オプション1:リストのコピー参照を更新します
private void updateList(List<A> listOfA) {
listOfA.forEach(item -> {
item.setProperty1(findSomething());
}
}
オプション2:、他から新しいリストを作成し、これを更新し、それを返す:それ
private List<A> updateList(List<A> listOfA) {
listOfA.forEach(item -> {
item.setProperty1(findSomething());
}
return listOfA;
}
オプション3戻ります
private List<A> updateList(List<A> listOfA) {
List<A> newList = new ArrayList<>();
//Logic to copy listOfA in newList....
newList.forEach(item -> {
item.setProperty1(findSomething());
}
return newList ;
}
あなたが言及したすべてのオプションがafterallと同じ結果を与えるので、たぶんユースケースを明確にするかもしれません。オプション3)新しいリストの作成では、私はJavaの変更可能なリストでは使用しません。 – unserializable
ユースケースによっては、[Observer pattern](https://en.wikipedia.org/wiki/Observer_pattern)を実装し、その状態を 'findSomething()'で更新する項目Aであっても、 Aにとって重要な一定の状態が変更されました。 – unserializable