gpt4 book ai didi

java - ArrayList 内的元素无法删除

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

我有一个数组列表domainDailyData,它将存储域/应用程序数据,请参阅以下

MIT/MIT0010, MIT/MIT0010, MIT/MIT0011, MBO/MBO0010, MIT/MIT0010, MIT/MIT0010, MIT/MIT0010, MIT/MOF0011, MIT/MIT0010]



我希望我的程序可以计算这些元素在数组列表中出现的次数,之后我将删除计算的元素以避免再次计算并将提取的信息存储到另一个中arraylist 调用 domainMonthlyData1 。但是我发现 domainDailyData 里面的一些数据没有被删除。

这是我的源代码

               System.out.println("The domainDailyData before is :"+domainDailyData);
int count11 = 0;
for(int c = domainDailyData.size()-1;c>=0;c--)
{
String domainAndApps1 = domainDailyData.get(c); //get the domain/apps out
count11 = Collections.frequency(domainDailyData,domainAndApps1); // counting the number of occurrence
System.out.println("Count of mail is :"+count11);
String [] splittedData = domainAndApps1.split(splitBy); // the domain/apps
// System.out.println(Emaildata1);
String domain1 = splittedData [0];
String apps1 = splittedData[1];
// System.out.println("The extracted domain is :"+domain1); // display domain
// System.out.println("The extracted apps is :"+apps1); // display apps
domainMonthlyData1.add(domain1);
domainMonthlyData1.add(apps1); //add into arraylist
domainMonthlyData1.add(String.valueOf(count11)); //add into arraylist
Iterator<String> it1 = domainDailyData.iterator();
while(it1.hasNext()) // remove the counted domain/apps
{
String domainAndApps2 = it1.next();
if(domainAndApps1.equals(domainAndApps2))
{
it1.remove();
c--;
}
}
}
System.out.println("The domainDailyData after is :"+domainDailyData);
System.out.println("The domainMonthlyData1 is :"+domainMonthlyData1);



这是我的程序的示例输出

The domainDailyData before is :MIT/MIT0010, MIT/MIT0010, MIT/MIT0011, MBO/MBO0010, MIT/MIT0010, MIT/MIT0010, MIT/MIT0010, MIT/MOF0011, MIT/MIT0010]
Count of mail is :2
Count of mail is :5
The domainDailyData after is :[MIT/MIT0011, MIT/MOF0011]
The domainMonthlyData1 is :[MBO, MBO0010, 2, MIT, MIT0010, 5]

最佳答案

您总是可以获取列表的第一个元素来进行计数。由于它将被稍后的 Iterator 循环删除,因此您可以在下一次迭代中安全地再次获取第一个元素,以便计算下一个元素。

因此,您的代码将如下所示。

while (domainDailyData.size() > 0)
{
String domainAndApps1 = domainDailyData.get(0);
// your logic
Iterator<String> it1 = domainDailyData.iterator();
while(it1.hasNext()) // remove the counted domain/apps
{
String domainAndApps2 = it1.next();
if(domainAndApps1.equals(domainAndApps2))
{
it1.remove();
}
}
}

关于java - ArrayList 内的元素无法删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46948001/

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