首页 > 解决方案 > 将 JavaScript for 循环翻译成 Java 并简化

问题描述

我正在尝试将以下 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);
      }
   }
}

标签: javascriptjava

解决方案


你可以使用

cp.setPreferenceValue(cp.getPreferenceValue().equals("Y"));

类似于 JS。如果首选项值需要一个字符串,您可以将布尔值转换为字符串,如下所示:

String.valueOf(cp.getPreferenceValue().equals("Y"))

此外,为了使.equals比较为空安全(getPreferenceValue()可以返回空),你可能应该去

"Y".equals(cp.getPreferenceValue())

preferenceValue如果previous为null ,它将返回false 。

所以总而言之

cp.setPreferenceValue(String.valueOf("Y".equals(cp.getPreferenceValue())));

推荐阅读