我正在嘗試將下面的 JavaScript for 循環轉換為 Java for 循環。它的作用是當preferenceType 為'Y_N' 時,將preferenceValue 從'Y' 更改為true,將'N' 更改為false。var array = [ { preferenceCode: 'A1', preferenceType: 'Y_N', preferenceValue: 'Y' }, { preferenceCode: 'A2', preferenceType: 'Y_N', preferenceValue: 'N' }, { preferenceCode: 'A3', preferenceType: 'DATE', preferenceValue: '15/03/2018' }, { preferenceCode: 'A4', preferenceType: 'Y_N', preferenceValue: 'Y' }];for(var i = 0; i < array.length; i++) { if(array[i].preferenceType === 'Y_N') { array[i].preferenceValue = (array[i].preferenceValue === 'Y'); }}console.log(array);我試了一下,但我的 Java for 循環看起來龐大且過于復雜(至少是 cp.setPreferenceValue 位)。有沒有辦法簡化它?CompanyPreference[] companyPreferences = returnedPreferencesFromDatabase; for(CompanyPreference cp : companyPreferences) { if(cp.getPreferenceType().equals("Y_N")) { if(cp.getPreferenceValue().equals("Y")) { cp.setPreferenceValue(true); } else { cp.setPreferenceValue(false); } }}
2 回答

一只斗牛犬
TA貢獻1784條經驗 獲得超2個贊
你可以用
cp.setPreferenceValue(cp.getPreferenceValue().equals("Y"));
類似于JS。如果首選項值需要一個字符串,您可以將布爾值轉換為字符串,如下所示:
String.valueOf(cp.getPreferenceValue().equals("Y"))
此外,為了使.equals
比較空安全(getPreferenceValue()
可能返回空值),您可能應該去
"Y".equals(cp.getPreferenceValue())
如果前一個preferenceValue
為空,它將返回 false 。
所以總而言之
cp.setPreferenceValue(String.valueOf("Y".equals(cp.getPreferenceValue())));

胡子哥哥
TA貢獻1825條經驗 獲得超6個贊
您可以將代碼簡化為以下
for(CompanyPreference cp : companyPreferences) {
if(cp.getPreferenceType().equals("Y_N")) {
cp.setPreferenceValue(cp.getPreferenceValue().equals("Y"));
}
}
添加回答
舉報
0/150
提交
取消