我有两个ArrayLists.
ArrayList A包含
['2009-05-18','2009-05-19','2009-05-21']
Run Code Online (Sandbox Code Playgroud)
ArrayList B包含 ['2009-05-18','2009-05-18','2009-05-19','2009-05-19','2009-05-20','2009-05-21','2009-05-21','2009-05-22']
我必须比较ArrayLst A和ArrayLst B. 结果ArrayList应该包含ArrayList中不存在的List .AllList结果应该是
[ '2009-05-20', '2009-05-22']
怎么比较?
我有两个相同对象的集合,Collection<Foo> oldSet和Collection<Foo> newSet.所需的逻辑如下:
foo是(*)oldSet但不是newSet,请致电doRemove(foo)foo不在,oldSet但在newSet,呼叫doAdd(foo)foo在两个集合中但已修改,请调用doUpdate(oldFoo, newFoo)!foo.activated && foo.startDate >= now,打电话doStart(foo)foo.activated && foo.endDate <= now,打电话doEnd(foo)(*)"in"表示唯一标识符匹配,不一定是内容.
目前的(传统)的代码做了很多比较,以计算出removeSet,addSet,updateSet,startSet和endSet,然后循环,在每个项目采取行动.
代码非常混乱(部分是因为我已经遗漏了一些意大利面条逻辑)而我正在尝试重构它.更多背景信息:
oldSet而newSet实际上是由支持ArrayList我的问题:
oldSet和newSet成HashMap<Foo>(顺序并不关心这里的),用ID作为键,这将使得代码更易于阅读和更容易比较?转换损失了多少时间和内存性能?