我在 URL 中传递一些参数,然后将它们添加到列表中。我的列表限制为 5 个元素。因此,如果有人在 URL 中添加第 6 个元素,列表将忽略它。所以我尝试使用计数器,但逻辑未按预期工作。我使用 While
循环来实现这一点。因此,如果列表大小小于 5,请设置 AgencyCds,否则仅返回列表。
private List<IUiIntegrationDto> generateViewIntegrationReportData(ESignatureIntegrationConfig eSignConfig) throws Exception {
int counter = 1;
if(eSignConfig.getAdditionalAgencyCds() != null ) {
List<String> combinedAgencyCds = new ArrayList<String>();
for(String agencyCd : eSignConfig.getAgencyCd()) {
combinedAgencyCds.add(agencyCd);
}
StringTokenizer token = new StringTokenizer(eSignConfig.getAdditionalAgencyCds().toString(), StringConstants.COMMA);
while(token.hasMoreTokens()) {
combinedAgencyCds.add(token.nextToken());
}
while(combinedAgencyCds.size() < 5) {
counter = counter + 1;
eSignConfig.setAgencyCd(combinedAgencyCds);
}
// eSignConfig.setAgencyCd(combinedAgencyCds);
}
List<IUiIntegrationDto> intgList = getUiIntegrationManager().retrieveUiIntegrationReportData(eSignConfig.getAgencyCd(), eSignConfig.getCreatedDays(),
eSignConfig.getLob(), eSignConfig.getTransactionStatus(), eSignConfig.getAccounts(), eSignConfig.getSortKey(), eSignConfig.getSortOrder());
return intgList;
}
我不完全确定这个逻辑是否正确或者是否有更好的方法。
谢谢
最佳答案
在代码中尝试这个而不是最后一个:
if(combinedAgencyCds.size() <= 5) {
eSignConfig.setAgencyCd(combinedAgencyCds);
} else {
eSignConfig.setAgencyCd(combinedAgencyCds.subList(0, 5));
}
如果大小小于 5,则将使用完整的组合列表。否则,仅使用前 5 个元素。
编辑:或者更好:
eSignConfig.setAgencyCd(combinedAgencyCds.subList(0, Math.min(5, combinedAgencyCds.size())));
关于java - java中使用While循环计算列表的元素数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39125757/