java 高效记数器

Counter类

public class Counter<K> {
    private HashMap<K, MutableInteger> counter = new HashMap<>();

    public void addCount(K k) {
        MutableInteger count = counter.get(k);
        if (count == null) {
            counter.put(k, new MutableInteger(1));
        } else {
            count.setVal(count.getVal() + 1);
        }
    }

    public int getCount(K k) {
        MutableInteger count = counter.get(k);
        if (count == null) {
            return 0;
        } else {
            return count.getVal();
        }

    }
}

可变整型

public class MutableInteger {
    private int val;

    public MutableInteger(int val) {
        this.val = val;
    }

    public int getVal() {
        return val;
    }

    public void setVal(int val) {
        this.val = val;
    }

    @Override
    public String toString() {
        return Integer.toString(val);
    }
}

使用

Counter<String> counter = new Counter<>();
counter.addCount("test");
int count = counter.getCount("test");

目的是减少Map查寻次数。

可参考原文链接,里面有几种实现,有测试结果,还有线程安全的counter

你可能感兴趣的:(java 高效记数器)