加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java中对象列表之间的最佳差异

发布时间:2020-12-15 08:33:16 所属栏目:Java 来源:网络整理
导读:我的服务器上有一个 Java对象列表,它通过一些序列化机制发送给客户端.偶尔会在服务器上更新对象列表,也就是说,某些对象会被添加,有些会被删除而其他对象只会更改它们在列表中的位置.我想在客户端更新List,但发送尽可能少的数据.特别是,我不想重新发送客户端
我的服务器上有一个 Java对象列表,它通过一些序列化机制发送给客户端.偶尔会在服务器上更新对象列表,也就是说,某些对象会被添加,有些会被删除而其他对象只会更改它们在列表中的位置.我想在客户端更新List,但发送尽可能少的数据.特别是,我不想重新发送客户端上已有的对象.

是否有一个库可以从两个列表中产生某种差异,所以我只能发送差异和新的对象?

我找到了unix diff命令的几个Java实现,但是这个算法对于顺序更改是不实用的.即. [A,B,C] – > [C,A]可以仅作为地点更改[1-> 3] [3-> 1]发送,而diff将要重新发送整个A和C对象(据我所知).

解决方法

我会这样做,通过使对象的公共接口静默地修改它们保持所做更改的日志,即,将表示每个修改的对象添加到修改列表中.

通过这种方式,您可以获得发送到其他计算机的确切更改的最小列表,而不需要通过比较旧版和新版来使用错误的猜测来推断它们.

要创建对象模型以便自动记录对自身的更改,您可能会从一些代码生成或AOP中受益,以避免大量重复模式.设置属性值或从列表中添加/删除的方法都需要调用对象层次结构共享的中央日志.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读