我正在尝试将下面的 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
提交
取消