ユーザーの好みに応じて、配列リストのオブジェクト値を比較し、最大値を取得したいと思います。私の最初のアプローチは、オブジェクトプロパティの関数を定義し、配列リストを反復処理することでした。
private MyModel getMaxValueA(ArrayList<MyModel> myModelList) {
MyModel res = null;
for (MyModel myModel : myModelList) {
if (myModel != null) {
if (myModel.valueA() > res.valueA()) {
res = myModel;
}
} else {
res = myModel;
}
}
return res;
}
問題は、比較したい4つの異なる値があり、4つの同様の関数を定義するのは正しくないように思われるため、すべての機能を組み合わせてスイッチ/ケースを追加してみました
private MyModel getMaxValueA(ArrayList<MyModel> myModelList, Setting mySetting) {
MyModel res = null;
for (MyModel myModel : myModelList) {
if (myModel != null) {
switch (mySetting) {
case settingA:
if (myModel.valueA() > res.valueA()) {
res = myModel;
}
break;
case settingB:
if (myModel.valueB() > res.valueB()) {
res = myModel;
}
break;
........
} else {
res = myModel;
}
}
return res;
}
これは少し短く、4つの機能ではなく1つだけですが、私も幸せではありません。それを改善するためのアイデアはありますか?
ありがとう。