有一个数组列表,如下所示
List<Accounts> accList = [{"acCat":"SBSDF","acDesc":"SBA","tranID":"D1P902368"},{"acCat":"RCCIT","acDesc":"ODA","tranID":"D1P902368"},{"acCat":"SBSFA","acDesc":"SBA","tranID":"D1P902360")]
情况就像如果我的列表将 acDesc 作为 ODA 和 SBA,则应该进行比较 ODA tranID 与 SBA tranID 是否匹配,如果两者相等则应返回布尔值 true。
如果如何以简洁的方式完成此操作,我不想进行多次检查。
您可以使用 Java 8 流来实现这一点。
public boolean isTransactionIdSameForODAandSBA(List<Accounts> accList) {
String odaTranID = accList.stream()
.filter(account -> "ODA".equals(account.getAcDesc()))
.findAny()
.map(Accounts::getTranID)
.orElse(null);
String sbaTranID = accList.stream()
.filter(account -> "SBA".equals(account.getAcDesc()))
.findAny()
.map(Accounts::getTranID)
.orElse(null);
return odaTranID != null && odaTranID.equals(sbaTranID);
}
一旦找到有效匹配,该函数将立即返回,而不是迭代整个数组两次。
此外,请确保您的 Accounts 类已定义相应的 getter,否则您将不得不稍微调整代码。