目前,我正在研究Storm的源代码,并且进入了ExecutorDetails
包的scheduler
类。上课很简单,我只是
是否要出于startTask
和endTask
字段的目的,为什么在hashcode()
方法中将endTask
乘以13,这是任意的还是具有某些特殊含义?
package backtype.storm.scheduler;
public class ExecutorDetails {
int startTask;
int endTask;
public ExecutorDetails(int startTask, int endTask) {
this.startTask = startTask;
this.endTask = endTask;
}
public int getStartTask() {
return startTask;
}
public int getEndTask() {
return endTask;
}
public boolean equals(Object other) {
if (other == null || !(other instanceof ExecutorDetails)) {
return false;
}
ExecutorDetails executor = (ExecutorDetails) other;
return (this.startTask == executor.startTask) && (this.endTask == executor.endTask);
}
public int hashCode() {
return this.startTask + 13 * this.endTask;
}
@Override
public String toString() {
return "[" + this.startTask + ", " + this.endTask + "]";
}
}
最佳答案
我不确定startTask
和endTask
:
我认为执行者可以分配一系列任务(从startTask到endTask)。
对于hashCode()
(我确定):
与13相乘没有特殊含义。 hashCode()
的目的是提供哈希值的统一分布(冲突尽可能少)。在计算中使用质数是达到此目标的一种标准方法(不仅在Java中)。
关于java - Storm的ExecutorDetails类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31932381/