2012-07-19 79 views
3

我有两个的ArrayList名为fw_week和sw_week ... 现在算算fw_week之间fw_diff这就是差异,sw_week 和sw_diff这是sw_week和fw_week之间的区别......如何在不改变Java中的第一个arraylist值的情况下找到两个arraylist之间的区别?

我已经使用像下面的脚本,

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值...所以请任何人都可以帮助我解决这个问题....

+0

你有什么关于新解决方案,或者你想为你写吗? – 2012-07-19 05:14:39

+0

检查此问题http://stackoverflow.com/questions/919387/how-can-i-calculate-the-difference-between-two-arraylists http://stackoverflow.com/questions/1235033/java-comparing-two -string-arrays-and-removing-elements-that-exist-in-arrays- – Pooya 2012-07-19 05:17:16

回答

3
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既包含名单的intersaction。所以现在,对于sw_diff,我们只需要从sw_week中删除fw_diff。无需删除所有fw_week

+0

谢谢Mr.PriyanK ..... – 2012-07-19 05:56:04

0

您需要克隆的数组:

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

你做任何删除之前。

+0

谢谢Mr.Jon,但在完成计算后我不想更改fw_week和sw_week值,因为我需要他们进一步计算.... – 2012-07-19 05:20:16

+0

@RamkumarP'fw_week'和'sw_week'列表未触及,因为您正在处理它们的克隆,而不是列表本身。 – 2012-07-19 05:22:14

+0

我认为clone()方法用于Array不适用于ArrayList .... – 2012-07-19 05:32:10

0

我们做我们喜欢这个应用程序相同的事情: -

我们的情况是,我们有2 ArrayList和我需要找到第一和第二的ArrayList的区别。

以下是代码片段: -

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

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