我们如何计算程序调用 put() 和 get() 函数的次数



假设我们在程序中使用map,我们如何计算程序调用put()和get()函数的次数?.如果我们创建了地图的多个实例,该怎么办?您将如何汇总每个地图对象的总数?实际上,一个朋友告诉我,他在java工作面试中得到了这个问题。我找到了解决方案,但我没有弄清楚。

如果只想添加对类中方法的调用,请使用static字段:

public class Map ... {
    private static int count = 0;
    public ... get(...) {
        count++;
        ...
    }
    public void put(...) {
        count++;
        ...
    }
    public static int getCount() {
        return count;
    }
}

这里有一种方法,假设程序可以使用 Map 的子类而不是标准的 Java Map:

public class MyMap<K, V> extends Map<K, V> {
    int getCount = 0;
     @override
     public V get(K key) {
          getCount++;
          return super.get(key);
     }
     public getGetCount() {
         return getCount;
     }
}

还值得注意的是,模拟框架解决了类似的问题(尽管这个特定问题只是它们所做的一件小事)。 例如,Mockito生成类/接口的模拟版本,这些模拟版本计算每个方法的调用次数。模拟本身不能立即使用,除非您实现一些存根行为。 或者,如果您使用 mockito,间谍,这类似于继承,可能是实现此行为的最快方法。 有关详细信息,请参阅 https://code.google.com/p/mockito/。

最新更新