【问题标题】:Date changes after added to ArrayList添加到 ArrayList 后的日期更改
【发布时间】:2013-03-21 15:22:26
【问题描述】:

我有以下几点:

List<ArrayList<AvailablePeriodObj>> outputLists = new ArayList<ArrayList<AvailablePeriodObj>>();

ArrayList<AvailablePeriodObj> partOutputList = new ArrayList<AvailablePeriodObj>();    
DateTime beginCheck = periodsList.get(0).getStart();
DateTime endCheck = periodsList.get(0).getEnd();

for(int i= 0; i< periodsList.size(); i++) {
            AvailablePeriodObj apo = periodsList.get(i);

            if(apo.getStart().equals(beginCheck) && apo.getEnd().equals(endCheck)) { 
                partOutputList.add(apo);
            } else {
                outputLists.add(partOutputList);
                partOutputList.clear();
                beginCheck = apo.getStart();
                endCheck = apo.getEnd();
                partOutputList.add(apo);
            }
            if(i== (periodsList.size() - 1)){
                outputLists.add(partOutputList);
            }

        }

我正在为所有开始和日期对创建新列表,我的问题是在该过程完成后,所有列表中的每个对象都会获得最后使用的开始和日期值。

我想要的结果是多个 ArraLists,具体取决于有多少不同的开始日期对。

【问题讨论】:

  • 您能否在此处添加有关您要实现的目标的更多详细信息。不是很清楚。
  • 添加了更多细节..
  • 抱歉,我想我看错了代码。错误的答案。你是如何创建输出列表的?我们可能需要查看其中的一些代码
  • 输出列表是列表的列表,它是在第一条规则中创建的\
  • periodsList 声明在哪里?

标签: java object for-loop


【解决方案1】:

不要调用partOutputList.clear();创建一个新的partOutputList实例(partOutputList = new ArrayList&lt;AvailablePeriodObj&gt;())。

您现在所做的只是将相同的partOutputList 实例添加到outputLists,清除它然后添加最后一个值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多