如何比较两个有序数组中的结构数据?

如何解决如何比较两个有序数组中的结构数据?

| 我有一个有趣的问题。我正在为我的应用程序创建一个修订系统。它的工作方式是,每次创建新的post对象时,post对象都会尝试为其已更改的每个属性创建一个历史记录。 因此,如果post.subject被编辑,则会在历史记录表中创建一个新的修订记录。它只会存储新的主题文本(以及相关的帖子和​​创建它的用户)。如果更改了多个属性,则会将它们传递到数组中,并且每个属性将存储在自己的记录中,并按UUID分组。 为了减少多余的记录,历史记录对象将尝试查找任何现有修订并更新它们为“ 0”。这样,我们可以在短时间内将同一修订中的更改保留下来。如果他们还不年轻,则会创建新的修订。 场景: Foo用户在帖子上更改主题(创建主题修订)。 Foo用户返回并更改正文和主题(更新了现有的主题修订;创建了新的正文修订)。两个版本都需要具有相同的UUID。 每个发布对象具有三个属性
subject,body,footer
。我已经做了简单的部分:通过循环包含修订数据的args数组,创建不存在的新修订。
// Find existing revisions younger than some time value
local.revisions = this.findAll(where=\"rules go here\",returnAs=\"struct\");

// If no revisions are found create new ones
if (! arrayLen(local.revisions))
{
    // Create UUID to group revisions
    local.revisionGUID = createUUID();

    // loop over the arguments array (contains revision data) and create new revisions
    for (local.i in arguments.data)
        local.history = this.new(properties=local.i,revisionGUID=local.revisionGUID);
        local.histroy.save();
}

// If some revision data does exist,update existing ones,and create the new ones; the UUID for new revisions should use the UUID of existing revisions
else
{
   logic goes here
}
现在开始棘手的部分。如果确实有一系列修订,我需要这样做: 将其与args范围中的数组进行比较。 对于args范围中现有修订版数组中不存在的每个修订,我都需要创建它。对于确实存在的args范围中的修订(这意味着它具有与年龄限制相匹配的修订),我需要使用args范围中相应修订的数据来更新其数据。 它不能像arrayContains()那样简单,因为存储在数组中的数据是结构。。我不知道如何比较包含结构的数组! 题: 我是否以正确的方式解决问题? 我可以使用哪些方法来完成上述功能?     

解决方法

        警告:这是高度实验性的...
<cfset x1 = {a=1,b=2}>
<cfset x2 = {b=2,a=1}>

<cfdump var=\"#x1.hashCode()#\">
<cfdump var=\"#x2.hashCode()#\">
它们返回相同的值。因此,如果愿意,您可以使用ѭ4来比较ѭ6的底层Java方法
public int hashCode()
来比较结构体     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?