/java-diff-knife

Java数据对比 Diff Util for Java Bean, Collection(List/Map), Tree & Json

Primary LanguageJava

简介

Java数据对比小工具,对比Java对象和集合(List和Tree)的数据差异。

特性

  • 对比范围 diff scope

    • 简单对象(simple bean)
    • 日期/时间
    • 集合类型(List/Map/Set)
    • 树 Tree
    • Json
  • 对比识别的操作类型

    • 新增
    • 删除
    • 数据变化
    • 更改位置(同层变化)
    • 移动节点(针对树非同层移动节点)
  • 对比参数

    • (字段去噪)配置忽略字段(例如系统自动更新字段)
    • (排序去噪)是否忽略排序,以及是否不影响排序结果的排序字段变化
    • (移动去噪)树对比是否忽略节点移动造成的其他节点变化
    • 支持配置仅对比指定属性字段,默认对比所有非忽略属性
    • 对比数据层数,全部对比或者对比指定层数
  • 对比结果 diff result

    • 多种对比类型
    • 支持对象或属性路径
    • 支持对象或属性标签label
    • 支持变化值的标签(属性关联字典)
    • 支持忽略某些跟随变化
    • 支持生成变化描述
  • 工具使用

    • Util工具类静态方法

      • 通用对比工具类 DiffResult DiffUtil.diff(workingObj, baseObj)
      • 树对比工具类
        • DiffResult TreeUtil.diffNodeList(List workingNodes, List baseNodes)
        • DiffResult TreeUtil.diffTree(JSONObject working, JSONObject base)
        • List TreeUtil.listToTree(List list)
        • List TreeUtil.treeToList(JSONObject tree)
    • 多参数配置

reference

open source project

page or article