diff算法

同层比较

diff算法
diff算法会从根节点开始,一层层的向下比较,如果在某一层的某个节点发现不同了,他就会直接替换这个节点下面的所有内容。
这样有同学就会想为什么不一直比较下去呢,下面不需要改变的也替换掉了。是存在这种问题。
但是同层比对的算法简单,算发简单,比对起来速度就很快。

key值的作用

diff算法
从图中可以看出,左边没有key值的时候,当状态发生改变时,比对起来就有两层循环的比较,算法的时间复杂度大。
当有了key值时,右边所示,就只需要一层循环来比对,都有自己的名字,比对起来就很快。

key值的设置

1.不推荐用下标做key值
diff算法
这时这个key值就失去了它存在的意义了

2.推荐的key值设置
diff算法