我有一个 Arraylist
的记录。
package com.demo.myproject;
public class Records
{
String countryName;
long numberOfDays;
public String getCountryName() {
return countryName;
}
public void setCountryName(String countryName) {
this.countryName = countryName;
}
public long getNumberOfDays() {
return numberOfDays;
}
public void setNumberOfDays(long numberOfDays) {
this.numberOfDays = numberOfDays;
}
Records(long days,String cName)
{
numberOfDays=days;
countryName=cName;
}
}
我的 Arraylist<Records>
包含值
Singapore 12
Canada 3
United Sates 12
Singapore 21
我需要修改它,使我的输出是
Canada 3
Singapore 33
United States 12
请帮我解决问题,方法。
最佳答案
您可以将您的记录存储在 map 中,其中键为国家/地区。
当您收到一条新记录时,请检查该国家/地区是否已在 map 中,如果是,请添加天数,如果不是则创建它。
Map<String, Record> map = new HashMap<String, Record> ();
addRecord(map, someRecord);
private void addRecord(Map<String, Record> map, Record record) {
Record inMap = map.get(record.getCountryName());
if (inMap == null) {
inMap = record;
} else {
inMap.setNumberOfDays(inMap.getNumberOfDays() + record.getNumberOfDays());
}
map.put(record.getCountryName(), inMap);
}
注意事项:
- 我假设修改记录没问题 - 如果不只是使用天数总和创建一个新记录的话。
- 您仍然可以通过调用
map.values();
获取记录集合并迭代它们 - ArrayList 不太适合您的用例。如果您真的需要坚持使用 ArrayList,对于每条新记录,您需要遍历列表,检查列表中的记录是否与新记录具有相同的国家/地区,如果找到则更新该记录,或者如果没有则添加一条新记录。
关于java - 在 ArrayList 中添加重复元素的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13006850/