【发布时间】:2021-02-11 15:53:43
【问题描述】:
我有两个具有相同数据的列表,但第一个列表的措辞可能略有不同。 我确保字段不匹配。如果他们不这样做,那么我在数组中的第一个单词中添加一个加号,在第二个数组中的第二个单词中添加一个减号。
我只是在迭代列表,我有很多 ifs。我还需要做其他数据点,ifs 可能会变得很长。有没有更有效的方法来做到这一点? 我不擅长 java 8+ 和流。用流来做会更好吗?如果是这样,我该怎么做?可以举个例子吗?
提前谢谢你!!!我真的需要帮助,但我希望我的心碎了!
List<ExteriorColor> f1 = vinResponseOne.getResult().getExteriorColors();
List<ExteriorColor> f2 = vinResponseTwo.getResult().getExteriorColors();
first = vinResponseOne.getResult().getExteriorColors();
second = vinResponseTwo.getResult().getExteriorColors();
private void compareExteriorColors(List<ExteriorColor> f1, List<ExteriorColor> f2){
for(int i =0; i< f1.size(); i++) {
if (!f1.get(i).getDescription().equals(f2.get(i).getDescription())) {
final String added = "+ " + f1.get(i).getDescription();
final String original = "- " + f2.get(i).getDescription();
first.get(i).setDescription(added);
second.get(i).setDescription(original);
}
if (!f1.get(i).getGenericDesc().equals(f2.get(i).getGenericDesc())) {
final String added = "+ " + f1.get(i).getGenericDesc();
final String original = "- " + f2.get(i).getGenericDesc();
first.get(i).setGenericDesc(added);
second.get(i).setGenericDesc(original);
}
if (!f1.get(i).getColorCode().equals(f2.get(i).getColorCode())) {
final String added = "+ " + f1.get(i).getColorCode();
final String original = "- " + f2.get(i).getColorCode();
f1.get(i).setColorCode(added);
f2.get(i).setColorCode(original);
}
if (f1.get(i).getInstallCause() != null) {
if (!f1.get(i).getInstallCause().equals(f2.get(i).getInstallCause())) {
final String added = "+ " + f1.get(i).getInstallCause();
final String original = "- " + f2.get(i).getInstallCause();
first.get(i).setInstallCause(added);
second.get(i).setInstallCause(original);
}
}
if (!f1.get(i).getPrimary().equals(f2.get(i).getPrimary())) {
final String added = "+ " + f1.get(i).getPrimary();
final String original = "- " + f2.get(i).getPrimary();
first.get(i).setPrimary(added);
second.get(i).setPrimary(original);
}
if (!f1.get(i).getRgbValue().equals(f2.get(i).getRgbValue())) {
final String added = "+ " + f1.get(i).getRgbValue();
final String original = "- " + f2.get(i).getRgbValue();
first.get(i).setRgbValue(added);
second.get(i).setRgbValue(original);
}
if (!f1.get(i).getStyles().equals(f2.get(i).getStyles())) {
List<String> styleFirst = new ArrayList<>();
List<String> styleSecond = new ArrayList<>();
final String added = "+ " + f1.get(i).getStyles();
final String original = "- " + f2.get(i).getStyles();
styleFirst.add(added);
styleSecond.add(original);
first.get(i).setStyles(styleFirst);
second.get(i).setStyles(styleSecond);
}
if (!f1.get(i).getType().equals(f2.get(i).getType())) {
String added = "+ " + f1.get(i).getType();
String original = "- " + f2.get(i).getType();
first.get(i).setType(added);
second.get(i).setType(original);
}
}
}
它最终的样子。
我稍后会转换成 json。
【问题讨论】:
标签: java arrays performance java-stream