在java中使用While循环计算列表的元素
我在URL中传递一些参数,然后将它们添加到列表中。我的列表限制为5个元素。因此,如果有人在URL中添加第6个元素,列表将忽略它。所以我尝试使用一个计数器,但是逻辑并没有按预期工作。我正在使用在java中使用While循环计算列表的元素,java,Java,我在URL中传递一些参数,然后将它们添加到列表中。我的列表限制为5个元素。因此,如果有人在URL中添加第6个元素,列表将忽略它。所以我尝试使用一个计数器,但是逻辑并没有按预期工作。我正在使用While循环来实现这一点。因此,如果列表大小小于5,则设置AgencyCD,否则只返回列表 private List<IUiIntegrationDto> generateViewIntegrationReportData(ESignatureIntegrationConfig eSignCon
While
循环来实现这一点。因此,如果列表大小小于5,则设置AgencyCD,否则只返回列表
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;
}
private List generateViewIntegrationReportData(ESignatureIntegrationConfig eSignConfig)引发异常{
int计数器=1;
if(eSignConfig.getAdditionalAgencyCds()!=null){
List combinedAgencyCds=new ArrayList();
对于(字符串agencyCd:eSignConfig.getAgencyCd()){
combinedAgencyCds.add(agencyCd);
}
StringTokenizer令牌=新的StringTokenizer(eSignConfig.getAdditionalAgencyCds().toString(),StringConstants.逗号);
while(token.hasMoreTokens()){
combinedAgencyCds.add(token.nextToken());
}
while(combinedAgencyCds.size()<5){
计数器=计数器+1;
eSignConfig.setAgencyCd(combinedAgencyCds);
}
//eSignConfig.setAgencyCd(combinedAgencyCds);
}
List intgList=getUiIntegrationManager().retrieveUiIntegrationReportData(eSignConfig.getAgencyCd(),eSignConfig.getCreatedDays(),
eSignConfig.getLob()、eSignConfig.getTransactionStatus()、eSignConfig.getAccounts()、eSignConfig.getSortKey()、eSignConfig.getSortOrder();
返回intgList;
}
我不完全确定这个逻辑是否正确,或者是否有更好的方法
谢谢好的,让我们来分析一下您的代码目前正在做什么
int counter = 1;
while(combinedAgencyCds.size() < 5) {
counter = counter + 1;
eSignConfig.setAgencyCd(combinedAgencyCds);
}
请注意,不需要为计数器变量进行显式声明,因为“i”对您来说很重要
现在,在循环中的实际逻辑中,我不确定
setAgencyCd
方法的作用,但是如果它只是像它看起来那样在eSignConfig
中设置一个列表变量,那么反复重复它不会有任何作用。从我在代码中看到的情况来看,您正在设置一个具有相同值的变量5次。如果您需要更多的解释,请告诉我,我很乐意修改答案。好的,让我们详细分析一下您的代码目前正在做什么
int counter = 1;
while(combinedAgencyCds.size() < 5) {
counter = counter + 1;
eSignConfig.setAgencyCd(combinedAgencyCds);
}
请注意,不需要为计数器变量进行显式声明,因为“i”对您来说很重要
现在,在循环中的实际逻辑中,我不确定
setAgencyCd
方法的作用,但是如果它只是像它看起来那样在eSignConfig
中设置一个列表变量,那么反复重复它不会有任何作用。从我在代码中看到的情况来看,您正在设置一个具有相同值的变量5次。如果您需要更多的解释,请告诉我,我将很乐意修改答案。在代码中尝试此选项,而不是最后一个选项:
if(combinedAgencyCds.size() <= 5) {
eSignConfig.setAgencyCd(combinedAgencyCds);
} else {
eSignConfig.setAgencyCd(combinedAgencyCds.subList(0, 5));
}
请在代码中尝试以下操作,而不是最后一次:
if(combinedAgencyCds.size() <= 5) {
eSignConfig.setAgencyCd(combinedAgencyCds);
} else {
eSignConfig.setAgencyCd(combinedAgencyCds.subList(0, 5));
}
调用eSignConfig.setAgencyCd()时,是否确实combinedAgencyCds列表正在减少?如果不是,则第二个while循环将是无限的。还有,计数器是用来做什么的?是的,这是我调试时发现的。我现在正在使用if条件。if(combinedAgencyCds.size()<5){counter=counter+1;eSignConfig.setAgencyCd(combinedAgencyCds);}那么您想要一个
AgencyCd
和AdditionalAgencyCd
的组合列表吗?如果已经有5个或更多代理CD,会发生什么情况?另外,你的计数器似乎没有做任何事情,所以基本上我不想添加第6个元素。如果元素小于5,则将它们添加到列表中。是的,它们是结合在一起的。如果已经有5个元素,则可以忽略第6个元素。在调用eSignConfig.setAgencyCd()时,是否确定combinedAgencyCds列表正在减少?如果不是,则第二个while循环将是无限的。还有,计数器是用来做什么的?是的,这是我调试时发现的。我现在正在使用if条件。if(combinedAgencyCds.size()<5){counter=counter+1;eSignConfig.setAgencyCd(combinedAgencyCds);}那么您想要一个AgencyCd
和AdditionalAgencyCd
的组合列表吗?如果已经有5个或更多代理CD,会发生什么情况?另外,你的计数器似乎没有做任何事情,所以基本上我不想添加第6个元素。如果元素小于5,则将它们添加到列表中。是的,它们是结合在一起的。如果已经有5个元素,可以忽略第6个元素。这是有意义的,我不使用while循环,因为它是无限的。我试图实现的是计算列表中元素的数量,这就是我使用计数器的原因。如果列表的大小为5或小于5,则使用set方法设置agencyCds,否则忽略第6个元素,但添加其余元素。这是有意义的,我不使用while循环,因为它是无限的。我试图实现的是计算列表中元素的数量,这就是我使用计数器的原因。如果列表的大小为5或小于5,则使用set方法设置agencyCds,否则忽略第6个元素,但添加其余元素。这就是我要查找的mdewit。这太棒了。它正在按预期工作。非常感谢你的帮助。这么好的学习。很酷没问题,很高兴它有用:)这就是我要找的mdewit。这太棒了。它正在按预期工作。非常感谢你的帮助。这么好的学习。很酷没问题,很高兴它有用:)