我正在尝试装箱一个代码,它以纳秒为单位计算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;
}
}