我正在使用接口 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次?
答案 0 :(得分:0)
Hello
是代码中的实习字符串。
Hello
的每个元素都不会有ArrayListMultiset
的副本。您将引用String Pool对象。
获取/放置的速度更快(我假设) - 取决于底层数据结构。