当前位置: 首页 > 知识库问答 >
问题:

如何使用String.HashCode生成主键

轩辕经国
2023-03-14

我知道这似乎已经讨论过了,答案是肯定的,string.hashCode可以为不同的字符串生成相同的值,但不太可能(Java的hashCode可以为不同的字符串生成相同的值吗?)。然而,它确实发生在我的应用程序中。

以下代码将生成相同的hashcode:-347019262(jave 1.7.25)

String string1 = "/m/06qw_";
String string2="/m/0859_";
System.out.println(string1+","+string1.hashCode());
System.out.println(string2+","+string2.hashCode());

在这种情况下,我确实需要hashcode,我希望使用它为字符串生成唯一的主键。看来我做得不对。有什么建议吗?

多谢!

共有1个答案

瞿文柏
2023-03-14

您误解了.hashcode()

契约的一部分是equals()的对象必须具有相同的hashcode()。然而,相反的情况并非如此:具有相同hashcode()的两个对象不必是equals()

这是一个有效的hashcode()实现,尽管完全没用:

@Override
public int hashCode()
{
    return 42; // universal answer
}
 类似资料:
  • 我有Spring Boot应用程序,我使用JPA层与PostgreSQL交谈。我有一个类型UUID的非主键,我想在调用保存方法时自动生成。我用@GeneratedValue注释了属性,但插入时列值为空。 我还创建了列: 在这种情况下如何自动生成非主要UUID值?

  • 我试图增加我的MySQL数据库模式的约束,为每个表添加外键约束。 表1:用户 INT(11)UNSIGNED NOT NULL AUTO_INCREMENT username`VARCHAR(50)不为空 主键() 表2:磁盘(这与用户有一对多的关系) INT(11)UNSIGNED NOT NULL AUTO_INCREMENT INT(11)不为空, 主键(,)索引(ASC) 约束 外键()

  • 我正在使用mySQL数据库,该表有一个由数据库引擎生成的UUID格式的主键。我使用Spring framework JdbcTemplate(https://docs.Spring.io/Spring/docs/current/javadoc-api/index.html?org/springframework/jdbc/core/JdbcTemplate.html)来执行所有操作。但是在插入时,

  • 问题内容: 我之前从未使用过JSON,并且尝试使用以下javascript:http : //jqueryselectcombo.googlecode.com/files/jquery.selectCombo1.2.6.js 它需要以下格式的JSON输出: 您能否指导我举一个有关如何使用PHP生成上述JSON输出的示例? 问题答案: 最简单的方法可能是从所需的对的关联数组开始: 然后使用forea

  • 本文向大家介绍如何获取自动生成的(主)键值?相关面试题,主要包含被问及如何获取自动生成的(主)键值?时的应答技巧和注意事项,需要的朋友参考一下 insert 方法总是返回一个 int 值 ,这个值代表的是插入的行数。 如果采用自增长策略,自动生成的键值在 insert 方法执行完后可以被设置到传入 的参数对象中。 示例:

  • 要用jooq创建一张唱片,我说 这将引发一个id为null的约束冲突异常。如果我设置一个id(如 我没有得到异常,但postgres不会自动生成值。 http://www.postgresql.org/docs/current/static/datatype-numeric.html#datatype-serial的postgres文档指出“在INSERT中省略SERIAL列,或者指定DEFAUL