计算 Java 包含密钥操作的纳米时间



我正在尝试装箱一个代码,它以纳秒为单位计算Java Map的containsKey操作(比如它运行该操作的速度(。方法具有映射<双倍,双倍>D作为参数,返回的值应包含Key操作对时间的正常使用(以纳秒为单位(。我真的不知道该怎么继续。Netbeans IDE给出了一条错误消息,表示这里有某种无限循环。

这是我到目前为止的代码:

import java.util.*;

public class calculateNanotime implements calculateNanotime{
/* 
* Measures Map's containsKey -operaation's time frequency as nanoseconds.
* @param D Map to be tested
* @return containsKey -operation's duration as nanoseconds
*/
//@Override
public long containsKeyTime(Map<Double, Double> D) {
// I should try with different key values
D.containsKey(1.0);

long beginning = System.nanoTime();
long end = System.nanoTime();

long result = end - beginning;

//I have a code in another class of this package, which will be testing how well this code work, after this is ready
result = testable.containsKeyTime(D);
return result;
}
}

以下是错误信息:线程中的异常";主";栈溢出在calculateNanotime.calculateNanotime.contactsKeyTime(calculateNanotime.java:35(

在calculateNanotime.calculateNanotime.contactsKeyTime(calculateNanotime.java:42(

您的无限循环错误可能来自此

public class calculateNanotime implements calculateNanotime

其中有一个实现同名接口的类。

参见Java类和接口名称冲突

您没有一个无限循环,您所拥有的是一个递归函数,没有可终止的基本情况。您的containsKeyTime方法可能应该将要检查映射是否包含的值作为参数。也许类似于:

public class calculateNanotime implements calculateNanotime {    
@Override
public long containsKeyTime(Map<Double, Double> doubleMap, double value) {     
long beginning = System.nanoTime();
boolean result = doubleMap.containsKey(value); //what to do with result?
return System.nanoTime() - beginning;
}
}

相关内容

  • 没有找到相关文章

最新更新