2016-08-24 122 views
0

我有以下问题 开始时我有一个“对象”,它基本上是一个字符串值的字典。即这不是一个.net对象,它是一种类似javascript对象的构造。算法在有序补丁集合中使用最新补丁对对象值进行补丁

然后我有一个有序的补丁集合(每个补丁集有一个“排名”)。每个补丁集都是一组补丁。每个修补程序都将覆盖“对象”中的单个字段的值或该字段的任何更高级别的修补程序的值。第一个补丁集中的补丁将覆盖字段的值。如果下一个补丁集包含指向相同字段的补丁程序,则它将再次被覆盖等。 我的目标是采用该对象并仅用最新的补丁覆盖其字段。

例如给定的对象像{价:35,数量:10}和集合的补丁:

  1. [{价:40}]
  2. [{数量:15},{价:20}]

在最后我应该得到{价格:20,数量:15}

我相信有一个算法,但我卡住了。任何建议最受欢迎

回答

1

将集合从头到尾迭代并跟踪已经“打补丁”的字段(例如使用Set),只设置以前未设置的字段。如果您计算设置字段的数量并且一旦该计数等于您完成的原始对象中字段的计数,您可以进一步优化。