我在URL中传递了一些参数,然后将它们添加到列表中。我的列表有5个元素的限制。因此,如果有人在URL中添加了第6个元素,列表就会忽略它。所以我试图使用计数器,但逻辑没有按预期工作。我正在使用While
循环来实现此目的。因此,如果列表大小小于5,则代理商ICs否则只返回列表。
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;
}
如果它是正确的或者有更好的方法,我不完全确定这个逻辑。
由于
答案 0 :(得分:2)
尝试使用此代码,而不是代码中的最后一次:
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())));
答案 1 :(得分:1)
好的,让我们分解您的代码目前正在做的事情。
int counter = 1;
while(combinedAgencyCds.size() < 5) {
counter = counter + 1;
eSignConfig.setAgencyCd(combinedAgencyCds);
}
这段代码有一些错误,我可以说出来。首先,这个循环有可能永远运行或根本不运行。因为永远不会操纵combinedAgencyCds
,所以大小不会改变,而在while循环中检查的逻辑永远不会做任何事情。其次,这是一个更有效的循环,假设你不需要在while循环中使用的计数器变量,而是使用for循环。
示例语法如下:
for (int i = 0; i < combinedAgencyCds.size(); i++) {
if (i < 5) {
// Do your logic here.
}
else {
break; // Or handle extra values however you want.
}
}
请注意,不需要将计数器变量显式声明为&#34; i&#34;很适合你。
现在在循环中的实际逻辑中,我不确定setAgencyCd
方法的作用,但是如果它只是在eSignConfig
中设置了一个列表变量,就像它一样,重复它一遍又一遍都没有做任何事情。从我在代码中看到的内容,您将设置一个具有相同值的变量5次。如果您需要更多解释,请告诉我,我将很乐意修改答案。