java - 添加具有相同日期的 ArrayList 值

标签 java collections arraylist

我有一个排序的ArrayList,例如-

List<DD_Details> list = new ArrayList<DD_Details>();
list.add(new DD_Details(26/05/2014,3000.00));
list.add(new DD_Details(26/08/2014,6000.00));
list.add(new DD_Details(26/08/2014,2000.00));

DD_Details 类是 -

class DD_Details {

    private Date ddSubmissionDate;
    private Double amount;

    public DD_Details(Date n, Double s) {
        this.ddSubmissionDate = n;
        this.amount = s;
    }

    public Date getDdSubmissionDate() {
        return ddSubmissionDate;
    }

    public void setDdSubmissionDate(Date ddSubmissionDate) {
        this.ddSubmissionDate = ddSubmissionDate;
    }

    public Double getAmount() {
        return amount;
    }

    public void setAmount(Double amount) {
        this.amount = amount;
    }

    public String toString() {
        return "ddSubmissionDate: " + this.ddSubmissionDate + "-- amount: "
                + this.amount;
    }
}

我只想添加同一日期的金额值并存储在新的 ArrayList 中。

我尝试了下面的代码,但它无法正常工作。

for (int i = 0; i < list.size(); i++) {
    Double amt = 0.0;
    Date date1 = list.get(i).getDdSubmissionDate();

    for (int j = i + 1; j < list.size(); j++) {

        if (date1.equals(list.get(j).getDdSubmissionDate())) {
             amt = amt + list.get(j).getAmount() + list.get(i).getAmount();
        } else {
              amt = list.get(i).getAmount();
        }
    }
    list1.add(new DD_Details(date1, amt));
 }

请给我一些提示来完成它。提前致谢。

最佳答案

您可以使用下一个解决方案:

  List<DD_Details> list = new ArrayList<DD_Details>();
  List<DD_Details> list1 = new ArrayList<DD_Details>();
  list.add(new DD_Details(new Date(2014, 5, 26), 3000.00));
  list.add(new DD_Details(new Date(2014, 8, 26), 6000.00));
  list.add(new DD_Details(new Date(2014, 8, 26), 2000.00));

  for (DD_Details currentEl : list) // iterate over 'list'
  {
     DD_Details existingElement = null;
     for (DD_Details el1 : list1) // find element in 'list1' with the same date
     {
        if (el1.getDdSubmissionDate().equals(currentEl.getDdSubmissionDate()))
        {
           existingElement = el1;
           break;
        }
     }
     if (existingElement == null) // if element is not found in 'list1' then add current element to list
     {
        list1.add(currentEl); // or list1.add(new DD_Details(el.getDdSubmissionDate(), el.getAmount()))
     }
     else // if element is found, then increase amount
     {
        existingElement.setAmount(existingElement.getAmount() + currentEl.getAmount());
     }
  }

  // 'list1' contains what you need

关于java - 添加具有相同日期的 ArrayList 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25543351/

相关文章:

java - 如何克服 Hibernate Criteria 和 Example API 的限制?

java - 如何将 picoCLI 项目变成命令?

java - 下载文件在 PC 上可以,但在 Android 上只能下载 16kb

collections - Neo4j 中的并集和计数集合

java - Android - 我们在 HashMap<MyEnum, String> 中使用 enum 作为键代替 String 是否合适?

java - Junit 不能模拟一个类

java - 如何在操作时应用条件线程安全?

java - 在Java中寻找数组列表中的特定对象?

java - 列表<interfaceI> 与列表<?在 java 中扩展 InterfaceI>

java - 反序列化文件,然后将内容存储在 ArrayList<String> 中。 (java)