相关疑难解决方法(0)

以唯一且确定的方式将两个整数映射到一个整数

想象一下两个正整数A和B.我想将这两个整数组合成一个整数C.

可能没有其他整数D和E组合为C.因此将它们与加法运算符组合不起作用.例如30 + 10 = 40 = 40 + 0 = 39 + 1连接也不起作用.例如"31"+"2"= 312 ="3"+"12"

这种组合操作也应该是确定性的(总是在相同的输入下产生相同的结果)并且应该总是在整数的正侧或负侧产生整数.

mapping algorithm math integer deterministic

218
推荐指数
8
解决办法
9万
查看次数

Hibernate:什么时候需要实现equals()和hashCode(),如果是的话,怎么做?

基于各种糟糕的经历,我作为Java程序员的经验法则只是实现equals()hashCode()不可变对象,其中对象的两个实例确实是可以互换的.

基本上我想避免像HashMap链接中的关键问题那样的情况,或者如下所示:

  1. 获得具有特定身份的东西.
  2. 修改它.
  3. 将它添加到一个集合中.
  4. (稍后)获得具有相同身份的另一件事.
  5. 修改它.
  6. 将其添加到同一组.
  7. 没有注意到这个添加实际上并没有发生,因为该集认为事情已经存在.
  8. 对集合中的东西做点什么.
  9. 没有注意到步骤(5)的变化被忽略,我们仍然有步骤(2)的状态.

在我的Java职业生涯中,除了(1)值对象和(2)将东西放入集合之外,我还没有找到很多用处.我还发现,不变性+复制和修改构造函数/构建器通常比定位器更快乐.两个对象可能具有相同的ID,并且可能表示相同的逻辑实体,但如果它们具有不同的数据 - 如果它们在不同时间表示概念实体的快照 - 则它们不是.equals() equal()

无论如何,我现在在Hibernate商店,我更熟悉Hibernate的同事告诉我这种方法不会起作用.具体而言,声称似乎是在以下情况中 -

  1. Hibernate从数据库加载一个东西 - 我们称之为实例h1.
  2. 这个东西被编组并通过Web服务发送到某个地方.
  3. Web服务客户端对其进行了调整并返回修改后的版本.
  4. 修改后的版本在服务器上解组 - 我们称之为实例h4.
  5. 我们希望Hibernate通过修改来更新数据库.

-除非h1.equals(h4)(或许h4.equals(h1),我不太清楚,但我希望它是传递反正所以不管),Hibernate将不能够告诉这些都是一样的东西,坏的事情会发生.

那么,我想知道的是:

  • 这是真的?
  • 如果是这样,为什么?Hibernate equals()用于什么?
  • 如果Hibernate需要h1并且h4相同,它是如何(以及我们如何)跟踪哪一个是修改版本?

注:我读过实现equals()和hashCode()在Hibernate文档,它不处理,我担心的情况来看,至少直接,也没有任何细节什么的Hibernate真正需要出来解释equals()hashCode().Hibernate中的equals和hashcode的答案也没有,或者我不打算发布这个.

hibernate equals hashcode

7
推荐指数
1
解决办法
2868
查看次数

有一种简单的方法可以从两个整数的复合键创建一个唯一的整数键吗?

由于与问题没有太大关系的各种原因,我有一个带有由两个整数组成的复合键的表,我想从这两个数字中创建一个唯一的键.我最初的想法只是将它们连接起来,但是当我意识到(51,1)的复合键会产生与(5,11)相同的唯一键时,我很快就遇到了问题,即511.

有没有人有一种聪明的方法来生成两个整数中的整数,这样生成的整数对于一对起始整数是唯一的?

编辑:在面对令人印象深刻的数学后,我意识到我应该包括的一个细节是有问题的键的大小.在始发对中,第一个密钥当前是6位数,并且在系统的生命周期中可能保持7位数; 第二个关键还没有超过20个.鉴于这些限制,看起来问题就不那么令人生畏了.

t-sql math primary-key uniqueidentifier composite-key

5
推荐指数
3
解决办法
7516
查看次数

基类不定义等于但子类需要.如何实施?

我无权访问基类代码.但是需要能够在子类中定义equals,同时考虑一些基类属性.

此外,基类没有受保护的字段.所有字段只能通过访问者/ mutator访问.

仅仅对子类等于的基类字段进行比较会被认为是不好的吗?为什么?

我需要这样做,因为我的基类有一个默认等于不适用于我的目的,但它也有一些字段,当做一个子类等于时需要考虑...

java methods equals hashcode

3
推荐指数
1
解决办法
377
查看次数