计算哈希码位于特定值范围内?
Computed hashcode to lie within a particular range of values?
我有一个看起来像这样的函数:
public int getHashcode(int shardCount){
String personid = "<some long string value>";
String servicedate = "2019-12-22T01:31:30.000Z";
HashCodeBuilder hashCodeBuilder = new HashCodeBuilder();
return hashCodeBuilder.append(personid).append(servicedate).toHashCode() % shardCount;
//the shard count key comes in from a config file and has various values
// like 2,5,15,25 etc depending on some criteria
}
现在,要求是我希望此方法 return 哈希码,使其落在 0-10 范围内且不应超过 10。根据我的说法,最简单的方法是添加条件在 return 值之前检查,然后根据我的意愿 return 一个随机值,但这是对此的最佳解决方案,还是我应该放置一个固定的 "shardCount" 值来实现结果?
最简单的方法是return除以10
的余数。
替换
return hashCodeBuilder.append(personid).append(servicedate).toHashCode() % shardCount;
与
return (hashCodeBuilder.append(personid).append(servicedate).toHashCode() % shardCount) % 10;
我有一个看起来像这样的函数:
public int getHashcode(int shardCount){
String personid = "<some long string value>";
String servicedate = "2019-12-22T01:31:30.000Z";
HashCodeBuilder hashCodeBuilder = new HashCodeBuilder();
return hashCodeBuilder.append(personid).append(servicedate).toHashCode() % shardCount;
//the shard count key comes in from a config file and has various values
// like 2,5,15,25 etc depending on some criteria
}
现在,要求是我希望此方法 return 哈希码,使其落在 0-10 范围内且不应超过 10。根据我的说法,最简单的方法是添加条件在 return 值之前检查,然后根据我的意愿 return 一个随机值,但这是对此的最佳解决方案,还是我应该放置一个固定的 "shardCount" 值来实现结果?
最简单的方法是return除以10
的余数。
替换
return hashCodeBuilder.append(personid).append(servicedate).toHashCode() % shardCount;
与
return (hashCodeBuilder.append(personid).append(servicedate).toHashCode() % shardCount) % 10;