目前,我正在调查 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 + "]";
}
}
答案 0 :(得分:0)
我不完全确定startTask
和endTask
:
hashCode()
(我确定):
hashCode()
的目的是提供哈希值的统一分布(尽可能少的冲突)。在计算中使用素数是实现这一目标的标准方法(不仅仅是在Java中)。