gpt4 book ai didi

java arraylist 在设置大小时无限循环

转载 作者:行者123 更新时间:2023-12-02 01:46:21 25 4
gpt4 key购买 nike

我有这个代码,它只被调用一次

ArrayList<String> SendToEmails;
SendToEmails = new ArrayList<String>();

if(!environmentProduction){
SendToEmails.add(EmailAccountForTest1);
SendToEmails.add(EmailAccountForTest2);
}else{
SendToEmails.add(emailAccount);
}

SendToEmails.add("bla@bla.com");

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。

并使用小写字母的变量名

关于java arraylist 在设置大小时无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53649368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com