根据用户偏好,我想比较数组列表的对象值并获取最大值。我的第一种方法是为对象属性定义一个函数并遍历数组列表。
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;
}
这有点短,只有 1 个而不是 4 个函数,但它也不让我高兴。你有什么改进它的想法吗?
谢谢。