标签: hashcode

java检查中"=="运算符的方式和内容是什么?

我已经坚持了一段时间了,实际上我有两个对象,根据我的相同,我已经覆盖了hashCode方法来为两者创建相同的哈希码,当我使用"=="比较它们是否相等时对象的等于(它也使用"=="),它向我返回false,下面的场景应该完全解释:::

1)HashCode-->-626561382 AND 2)HashCode--->-626561382  
1)IdentityHashCode-->19640463
2)IdentityHashCode-->22330755  
1)Bean1=beans.OrdersBean@daa76e9a  AND 2)Bean2=beans.OrdersBean@daa76e9a  
Check MySelf for(==)-->false  
Check Object's Equals()-->false
Run Code Online (Sandbox Code Playgroud)

请你解释一下为什么会这样?????

java hash equals operators hashcode

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

不清楚hashCode合同违规

我已经看到很多关于不用Java覆盖hashCode的问题而且我得到了它,但是在这种稍微不同的情况下会发生什么:

hashCode = 1且equals未被覆盖.

似乎没有违反HashCode合约 - 我们为相同的对象返回相同的hashCode.但是这种实现允许添加重复键并为逻辑上相等的键重新调整null.另一方面,当:

hashCode = 1和@Override equals()

它工作得很好.我很难弄清楚这两种情况下发生了什么.

java equals hashcode

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

equals() 和 hashCode() 可以是 lambda 表达式吗?

我是 Java 新手。有人可以向我解释一下这里使用 lambda 和方法有什么区别吗?

方法等于()

  @Override
  public boolean equals(Object o) {

    if (this == o) {
      return true;
    }
    if (!(o instanceof Book)) {
      return false;
    }

    Book book = (Book) o;

    if (!author.equals(book.author)) {
      return false;
    }
    return title.equals(book.title);
  }
Run Code Online (Sandbox Code Playgroud)

拉姆达等于()

  public Function<Object, Boolean> equals = (Object o) -> {
    if (this == o) {
      return true;
    }
    if (!(o instanceof Book)) {
      return false;
    }

    Book book = (Book) o;

    if (!author.equals(book.author)) {
      return false;
    }
    return …
Run Code Online (Sandbox Code Playgroud)

java lambda equals hashcode class-method

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

了解 .NET 中的哈希代码

到目前为止我收集到的信息是,哈希码是整数,有助于更快地从数组中查找数据。看这段代码:

string x = "Run the program to find this string's hash code!";
int hashCode = x.GetHashCode();
Random random = new Random(hashCode);

for(int i = 0; i<100; i++)
{
// Always generates the same set of random integers 60, 23, 67, 80, 89, 44, 44 and so on...
int randomNumber = random.Next(0, 100);

Console.WriteLine("Hash Code is: {0}", hashCode);
Console.WriteLine("The random number it generates is: {0}", randomNumber);

Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我使用字符串的哈希码x作为随机数生成器的种子。这段代码给了我 100 个随机整数,但每次运行该程序时,它都会给我相同的随机数集!我的问题是:为什么每次循环迭代时它都会给我一个不同的随机数?为什么 x 的哈希码不断变化,即使字符串没有改变。哈希码到底是什么以及它们是如何生成的(如果需要)?

.net c# random hash hashcode

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

标签 统计

hashcode ×4

equals ×3

java ×3

hash ×2

.net ×1

c# ×1

class-method ×1

lambda ×1

operators ×1

random ×1