【问题标题】:How to find the difference between two arraylist without changing the first arraylist value in Java?java - 如何在不更改Java中第一个arraylist值的情况下找到两个arraylist之间的区别?
【发布时间】:2012-07-19 05:11:32
【问题描述】:

我有两个名为 fw_week 和 sw_week 的数组列表... 现在必须计算 fw_diff,即 fw_week 和 sw_week 之间的差异 和 sw_diff 是 sw_week 和 fw_week 之间的区别...

我用过类似下面的脚本,

    fw_diff=fw_week;
    sw_diff=sw_week;
    fw_diff.removeAll(sw_week);
    sw_diff.removeAll(fw_week);

在这里,我得到了正确的 fw_diff,但是 fw_week 的值也改变了,现在等于 fw_diff,所以第二个值 sw_diff 给出了错误的值,但是我不想改变 fw_week 和 sw_week 的值。 . 所以请任何人都可以帮我解决这个问题....

【问题讨论】:

标签: java


【解决方案1】:
fw_diff= fw_week.clone().removeAll(sw_week)
sw_diff=sw_week.clone().removeAll(fw_week)

更高效的一个:

fw_diff= fw_week.clone().removeAll(sw_week)
sw_diff=sw_week.clone().removeAll(fw_diff)

这里,fw_diff 包含两个列表的交互。所以现在,对于sw_diff,我们只需要从sw_week 中删除fw_diff。无需删除所有 fw_week

【讨论】:

    【解决方案2】:

    我们在我们的应用程序中做同样的事情:-

    我们的场景是我们有 2 个数组列表,我需要找出第一个和第二个数组列表之间的区别。

    下面是代码sn-p:-

    this.lstDifference=(ArrayList<String>) ListUtils.subtract(FirstArrayList,SecondArrayList);
    

    arraylist的类型可以根据你的两个arraylists改变。

    【讨论】:

      【解决方案3】:

      您需要克隆数组:

      fw_diff=fw_week.clone();
      sw_diff=sw_week.clone();
      

      在您进行任何删除之前。

      【讨论】:

      • 谢谢乔恩先生,但在完成计算后我不想更改 fw_week 和 sw_week 值,因为我需要它们进一步计算......
      • @RamkumarP fw_weeksw_week 列表保持不变,因为您使用的是它们的克隆,而不是列表本身。
      • @RamkumarP 您使用的是 Java,对吗? docs.oracle.com/javase/6/docs/api/java/util/…
      猜你喜欢
      • 2020-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-30
      • 1970-01-01
      • 1970-01-01
      • 2020-08-12
      相关资源
      最近更新 更多