我有这段代码,只有一次
ArrayList<String> SendToEmails;
SendToEmails = new ArrayList<String>();
if(!environmentProduction){
SendToEmails.add(EmailAccountForTest1);
SendToEmails.add(EmailAccountForTest2);
}else{
SendToEmails.add(emailAccount);
}
SendToEmails.add("[email protected]");
for (int x = 0; x < SendToEmails.size(); x++) {
//send mail
}
上面的代码是一个简短的代码段。.根据日志的SendToEmails大小为3。但是我的代码以无限循环结束。并一遍又一遍地发送相同的邮件。
这怎么可能?
最佳答案
我认为,您可以在循环中修改x。您可以尝试下一个:
int sendToEmailsSize = sendToEmails.size();
for(int x = 0; x < sendToEmailsSize; x++) {
//send emails and don`t change x
}
电子邮件列表的大小将仅计算一次,而不是在循环的每次迭代中计算。而且,如果您更改列表,则循环的迭代次数将保持不变。
你也可以使用forEach循环
for(String email: sendToEmails) {
//sendEmail(email)
}
但是,如果您不能在此循环中修改列表。如果使用多线程,则在另一个线程中更改列表时,如果循环尚未结束,则可以获得ConcurrentModificationException。
并使用带有小写字母的变量名