标签: hashcode

java中的对象身份哈希码

我一直在从事我的项目(我也在使用 EMF Compare)。我需要为我使用的每个对象保留一个唯一的 ID,这就是我决定使用 IdentityHashCode 的原因,据我所知,该值在编译过程中是相同的。

我已将对象作为另一个类的方法中的参数给出,但是当我尝试获取哈希码时,这与打印对象的值时看到的不同。

像这样的东西:

System.out.println("The Object is: "+obj)

System.out.println("The hash ID is: +Integer.toHexString(System.identityHashCode(obj)));

但结果我得到了这个:

对象是:***xxxxxxxxxxxxxx***.EntityImpl@18e588c (name: Comment) has been removed.

哈希 ID 为:1ec1758

正如您所看到的,两个值(18e588c1ec1758)完全不同,但我不明白为什么。到目前为止,我所做的唯一一件事(并且有效)是获取对象的 String,然后使用 substring 方法来获取18e588c(对于本例)

我将不胜感激任何答案。

java object hashcode uniqueidentifier

0
推荐指数
1
解决办法
1307
查看次数

HashMap 中不区分大小写的搜索

我有一张地图:

static Map<String, String> = getMap(); //getting a map from a config file.
Run Code Online (Sandbox Code Playgroud)

现在,在这张地图中,我需要使用 KEYS 执行不区分大小写的搜索。我没有将值放入映射中,不是通过 put 函数,但您可以将其视为以键值格式存储在数据库中的值,并将其作为映射检索。我需要进行案例不敏感搜索。

经过研究,使用TreeMap可以解决问题,但效率不高 --> O(log n)

或者覆盖HashMap的get()方法,创建我自己的HashMap。但这将包括覆盖许多方法,而且我不想要这么多,它不是非常重要的代码的一部分。

现在我正在将这些值以小写形式存储在数据库中并进行检查。但这使得数据库中容易出错且不可读。

是否可以有更简单的方法来做到这一点?

java dictionary hashmap hashcode case-insensitive

0
推荐指数
1
解决办法
2096
查看次数

为自定义类生成 hashCode()

我有一个名为的类Dish,我在ArrayLists 内处理它,所以我必须重写默认hashCode()方法。

@Override
public int hashCode() {
    int hash =7;
    hash = 3*hash + this.getId();
    hash = 3*hash + this.getQuantity();
    return hash;
}
Run Code Online (Sandbox Code Playgroud)

当我得到两个带有id=4quan=3id=5、的菜肴时quan=0hashCode()因为两者是相同的;

((7*3)+4)*3+3 = 78
((7*3)+5)*3+0 = 78
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?或者我选择的幻数 7 和 3 是错误的?

如何正确覆盖hashCode()以便它生成唯一的哈希值?

PS:从我从谷歌和SO搜索到的内容来看,人们使用不同的数字但使用相同的方法。如果问题出在数字上,我如何明智地选择实际上不会增加​​乘法成本并且同时即使对于更多数量的属性也能很好地工作的数字。

假设我有 7 个 int 属性和我的第二个魔法号。是 31,最终的哈希值将是第一个幻数。* 27512614111,即使我的所有属性都是 0。 那么,在哈希值不达到十亿的情况下,如何才能做到这一点,从而使我的处理器没有负担呢?

java hashcode

0
推荐指数
1
解决办法
3594
查看次数

SSDEEP哈希算法结果的最大长度

我找不到任何有关使用ssdeep 哈希算法计算的哈希值最大长度的信息。

我想通过其十六进制摘要表示将 ssdeep 哈希值存储在数据库中,但因此我需要指定该值的长度。

hash hashcode

0
推荐指数
1
解决办法
901
查看次数

重复的自定义对象被添加到哈希集中

我有一个 Employee 类,有 2 个属性 id 和 name。我将重写 hashcode 和 equals 方法,如下所示。

员工.java:

import java.util.Objects;

public class Employee {

    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, name);
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj …
Run Code Online (Sandbox Code Playgroud)

java hashcode hashset

0
推荐指数
1
解决办法
5471
查看次数

即使Java中List中对象的排序发生变化,如何保持相同的哈希码?

Class A {
   private String test1;
   private String test2;
}

Class Feature {
   private List<A> obj;

   /* 
    HashCode which should return same value even though i change ordering of objects in List
   */
}
Run Code Online (Sandbox Code Playgroud)

当前行为:

> List<A> contains [obj1, obj2, obj3] -> Some hashCode (Ex: 9058203945)
> List<A> contains [obj2, obj1, obj3] -> Some other hashCode (Ex:-23423423)
Run Code Online (Sandbox Code Playgroud)

我想要的是,如果我更改 List 中元素的顺序,我的 List 的 hashCode 应该相同。

有什么帮助吗?

提前致谢

java hashcode

0
推荐指数
1
解决办法
170
查看次数

在 Hibernate 中生成 equals() 和 hashCode() 方法哪种选择更好?

我在 Java 应用程序的每个 Hibernate 实体(如果没有继承)中创建equals()和方法。hashCode()然而,我有点困惑,想确定我的定义是否正确。您能否澄清以下问题?

  1. 在 IntelliJ 中,当我使用“生成”功能(通过 Alt + Insert)时,有一些模板,例如 IntelliJ Default、Java 7+ 等。我应该使用哪个模板?

  2. 使用“生成”功能时,我应该在equals() and hashCode()以下实体的方法中包含哪个字段?

    @Entity
    public class User {
    
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Long id;
    
        private String name;
    
        @Column(unique = true)
        private String email;
    
        // getter, setter, constructor...
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 我应该使用注释来实现简单易用吗@EqualsAndHashCode?或者它不灵活,我应该更喜欢明确地实施吗?

java spring equals hashcode lombok

0
推荐指数
1
解决办法
975
查看次数

是否有必要重写非哈希数据结构中的 hashcode 方法

我对Java中对象的哈希码方法的理解是:需要计算对象的哈希码,该哈希码又用于计算对象在哈希数据结构(如hashMap)中的索引/存储桶位置。

那么,对于不与哈希数据结构一起使用的类,不需要在其中实现 hashCode() 方法,这样说是否正确?换句话说,对于非哈希数据结构来说,重写 equals() 方法是否足够?

如果我的假设是错误的,也请纠正我。

java equals hashmap hashcode

0
推荐指数
1
解决办法
54
查看次数

使用 C# 中的默认哈希函数生成具有相同哈希值的三个不同字符串

我试图使用编程语言提供的默认哈希函数生成三个不同的字符串 A、B 和 C,以便它们的哈希值全部相等。具体来说,我需要确保A不等于B,B不等于C,A不等于C。

我尝试了多种方法,但尚未成功找到解决方案。我正在寻求帮助来实现可以满足这些要求的方法或算法。所有三个字符串的哈希值必须相同,这一点至关重要。

这是我的实现,但是它仍然不完整,因为我与前两个字符串发生了冲突,但与第三个字符串没有发生冲突。

var dictionary = new Dictionary<int, string>();

  int collusionCounter = 0, stringCounter = 0;
  string myString;
  int hash = 0;

  List<string> myList = new List<string>();


  while (true)
  {
    stringCounter++;
    myString = stringCounter.ToString();

    try
    {
      hash = myString.GetHashCode();
      dictionary.Add(hash, myString);
    }
    catch (Exception)
    {
      if (dictionary.ContainsKey(hash))
      {
        myList.Add(myString);
        collusionCounter++;
        if (collusionCounter == 2)
        {
          break;
        }
      }
      continue;
    }
  }

  var A = myList[0];
  var B = myList[1];
  var C = dictionary[hash];

  Console.WriteLine($"{A.GetHashCode()} {B.GetHashCode()} {C.GetHashCode()}");
Run Code Online (Sandbox Code Playgroud)

hier …

c# multithreading hash-function hashcode

0
推荐指数
1
解决办法
161
查看次数

在C中实现哈希图

我需要像在c ++中使用map一样,阻碍c中的键和值。

请分享最简单的示例以在c中的存储中存储唯一的键和值。键,我可以是任何字符串,值将是字符串。

谢谢

c c++ hashmap hashcode

-1
推荐指数
1
解决办法
4165
查看次数