你怎么写一个计数器方法来节省空间和时间?

时间:2016-09-18 19:35:48

标签: java list counter

我正在使用接口 Multiset ,然后由两个不同的类使用: ArrayListMultiset CounterMultiset

ArrayListMultiset只是使用.add方法在列表中放置一些东西。所以在循环中,

Multiset<String> set = new Multiset<String>();
for(int i = 0; i < 10000; i++)
{ 
    set.add("Hello");
}

这将导致程序将Hello添加到列表10,000次。

接下来我们有CounterMultiset。它存储一个Pair对象(另一个接收(T, Integer)的类,其中T是字符串,&#34; Hello&#34; Integer是它尝试的次数我已经这样写了:

public void add(Multiset<T> item) 
{
    if(!contains(item))
    {
        Pair newpair = new Pair(item, 0);
        pairs.add(newpair);
    }
    for(int i = 0; i < pairs.size(); i++)
    {
        if(pairs.get(i).getFirst() == item)
        {
            pairs.get(i).changeSecond();
        }
    }
}

changeSecond()将Object中的第二个数字递增1,以显示Hello已尝试再次添加。

我的问题是,这是节省节目空间和时间的合适方法吗?何时使用计数器会更快?何时更快地简单地添加&#34; Hello&#34; 10,000次?

1 个答案:

答案 0 :(得分:0)

Hello是代码中的实习字符串。

Hello的每个元素都不会有ArrayListMultiset的副本。您将引用String Pool对象。

获取/放置的速度更快(我假设) - 取决于底层数据结构。