Utk*_*glu 3 java data-structures
我使用HashSet add(); remove(); clear(); iterator();方法.到目前为止,一切都像一个魅力.但是,现在我需要满足不同的要求.
我希望能够从某个索引开始迭代.例如,我希望以下两个程序具有相同的输出.
计划1
Iterator it=map.iterator();
for(int i=0;i<100;i++)
{
it.next();
}
while (it.hasNext())
{
doSomethingWith(it.next());
}
Run Code Online (Sandbox Code Playgroud)
计划2
Iterator it=map.iterator(100);
while (it.hasNext())
{
doSomethingWith(it.next());
}
Run Code Online (Sandbox Code Playgroud)
我不想使用程序1的原因是它会产生不必要的开销.从我的研究中,我找不到一种创建带起始索引的迭代器的实用方法.
所以,我的问题是,在最小化开销的同时实现目标的好方法是什么?
谢谢.
还有一个原因add(),remove()是在一个快速HashSet.您正在交易能够将集合中的元素视为速度和内存成本的随机访问列表.
我担心你不能真的这样做,除非你先把你的Set转换成List.这很简单,但它通常涉及对集合中所有元素的完整处理.如果你想要从某个地方多次启动迭代器的能力形成相同的状态,那么它可能是有意义的.如果没有,那么你现在的方法可能会更好.
现在为代码(假设这Set<Integer> set = new HashSet<Integer>();是您声明的数据结构:
List<Integer> list = new ArrayList<Integer>(set);
list.subList(100, list.size()).iterator(); // this will get your iterator.
Run Code Online (Sandbox Code Playgroud)