java - 在 ArrayList 中添加重复元素的值

标签 java android

我有一个 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/

相关文章:

java - 从线程外部访问字符串

java - 我在启动 libgdx 游戏时遇到 java.lang.ExceptionInInitializerError

java - Android 触摸边界矩形和纹理位置

java - 在构建期间无法使 gradle 任务在 Java 中传递值

java - 即使有退出条件,欧几里得树对象堆栈溢出错误

java - 从 arrayList 中将双括号删除为单括号

带有手势的 Android fragment onCreateView

android - 按钮文本显示为垂直

java - 如何知道文本转语音是否正在进行?

android - CYGWIN 上的 ADB(可能是路径?)