目前,我正在研究Storm的源代码,并且进入了ExecutorDetails包的scheduler类。上课很简单,我只是
是否要出于startTaskendTask字段的目的,为什么在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 + "]";
    }
}

最佳答案

我不确定startTaskendTask


我认为执行者可以分配一系列任务(从startTask到endTask)。


对于hashCode()(我确定):


与13相乘没有特殊含义。 hashCode()的目的是提供哈希值的统一分布(冲突尽可能少)。在计算中使用质数是达到此目标的一种标准方法(不仅在Java中)。

关于java - Storm的ExecutorDetails类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31932381/

10-15 11:28