사용자 환경 설정에 따라 배열 목록의 객체 값을 비교하고 최대 값을 얻고 싶습니다. 첫 번째 방법은 객체 속성에 대한 함수를 정의하고 배열 목록을 반복하는 것입니다.arraylist에서 다양한 객체 값을 비교
문제가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 유사한 funktion을 정의 할 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 비트로 짧아졌지만 나에게도 행복합니다. 그것을 개선하기위한 아이디어가 있습니까?
감사합니다.
이제 설정을 고려해야하기 때문에 모든 추악한 코드를'compare()'로 가져와야합니다. 모든 로직을 하나로 묶는 대신 다양한 요구 사항에 대해 서로 다른 'Comparator'클래스를 작성하고 유지 관리하고 디버그하는 것이 훨씬 쉽습니다. – jlordo
그가 설정 개체를 이미 가지고 있는지 여부에 따라 다릅니다. 그 Setting 객체가이 목적을 위해서 만들어진 것이라면, 여러 Comparator를 가지고 있다고 언급 한 것이 더 낫다. – Subin
그가 'Setting' 객체를 이미 가지고 있다고하더라도, 짧은 유지 방법을 생성하기 때문에 내 방식이 더 멋지다. 그는 (의사 코드)'if (Setting == Option1) ... else if (Setting == Option2) ...' – jlordo