Java 列表最佳实践
我需要一些容器来保存元素,因此,如果我尝试获取 size()+i 元素,我将得到元素号 i。或者使用迭代器,它在尝试获取最后一个元素后从容器的开头开始?这两种情况下的最佳做法是什么?我的意思是性能和易用性。
I need some container to keep elements so, if I'll try to get the size()+i element, i'll get element number i. Or with iterator, which starts from the beginning of container after it tries to get the last element? What are the best practicies in both cases? I mean performance and easy useability.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以创建
ArrayList
的简单子类并重写get(int n)
方法,如下所示:对于迭代器,您需要实现自己的迭代器,这应该不那么难。
编辑:
假设您的新类名为 RingList,这里有一个示例 RingIterator (未经测试):
然后您将重写
RingList
中的iterator()
方法,如下所示You could create a simple subclass of
ArrayList<T>
and override theget(int n)
method as follows:As to the iterator, you will need to implement your own, which shouldn't be all that hard.
EDIT:
Assuming your new class is called RingList, here's a sample RingIterator (untested):
You would then override the
iterator()
method inRingList<T>
as对于第一部分,也许只需要
n % list.size()
?对于迭代器部分,创建一个包装迭代器的类,当 next() 返回 null 时,只需让它重置迭代器即可。
For the first part, just ask for
n % list.size()
perhaps?For the iterator part, create a class that wraps an iterator, and when next() returns null, just have it reset the iterator.
谢谢大家,这就是我创建的:
}
然后 get 方法:
我使用它:
我只想通过 getRingIter 只提供类型 ParentClass (而不是子类),但我没有找到一种方法可以在不创建的情况下做到这一点列表 - 列表的转换。
Thanks everyone, thats what I've created:
}
Then get method:
And I use it:
I wanted to make only type ParentClass (not SubClass) available via getRingIter, but I don't see a way to do it with no creation of List - convertion of List.
扩展 ArrayList 类并按照您喜欢的方式实现
get(Integer)
方法。我认为这是“最佳实践”。Extend the ArrayList class and implement the
get(Integer)
method the way you like. I think this is the 'best practice'.