加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 从string和int创建哈希

发布时间:2020-12-14 16:27:43 所属栏目:Java 来源:网络整理
导读:我记得 eclipse和想法有这个模板根据自己的属性自动创建一个对象的hashCode. 使用数字和字符串的策略之一就是这样. return stringValue.hashCode() + intValue * 32; 不好意思 我没有,也没有eclipse或想法在手边,我想创建这样的功能. 编辑 根据答案我创建这
我记得 eclipse和想法有这个模板根据自己的属性自动创建一个对象的hashCode.

使用数字和字符串的策略之一就是这样.

return stringValue.hashCode() + intValue * 32;

不好意思

我没有,也没有eclipse或想法在手边,我想创建这样的功能.

编辑

根据答案我创建这个迷你类

class StringInt {
        private final String s;
        private final int i;

        static StringInt valueOf( String string,int value ) {
            return new StringInt( string,value );
        }
        private StringInt( String string,int value ) {
            this.s = string;
            this.i = value;
        }
        public boolean equals( Object o ) {
            if( o != null && o instanceof StringInt ){
                StringInt other = ( StringInt ) o;
                return this.s == other.s && this.i == other.i;
            }

            return false;
        }
        public int hashCode() {
            return s != null ? s.hashCode() * 37 + i : i;
        }
    }

这个类被用作大的内存映射(> 10k元素)的关键字,我不想每次迭代它们来查找String和int是否相同.

谢谢.

ps .. mmh可能应该是StringIntKey的名字.

解决方法

使用Apache Commons HashcodeBuilder:
public int hashCode() {
    new HashCodeBuilder(17,37).
           append(myString).
           append(myInt);
}

链接到这里
http://commons.apache.org/lang/api-2.3/org/apache/commons/lang/builder/HashCodeBuilder.html

和这里:

http://www.koders.com/java/fidCE4E86F23847AE93909CE105394B668DDB0F491A.aspx

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读