想象一下,我需要创建一个元素集合,其中顺序可能或不重要.实际上,我计划做的就是使用迭代器.我注意到我的大多数同事使用ArrayList和LinkedHashSet/HashSet.我的问题是,如果我知道这些元素应该是唯一的,我应该使用Set还是List?实际上它并没有真正有所作为,但没有更有效地表达元素是独特的?
我发现这对于大型企业应用程序来说是一个有趣的问题,原因如下:1)如果你不能保证整体代码的质量,使用Set可能很危险.为什么?因为equals()和hashcode可能被错误地覆盖,因此使用Set可能会导致一些非常讨厌的问题.2)使用List对未来的更改更具弹性.如果出于某种原因重复,则无需担心.
从本质上讲,它归结为:如果我知道我应该期待独特的元素,我是否应该支持所有情况下的Set over List?
编辑:我想我也问:Set是否应该用于确保不添加重复项,或者它是否也可以用于说明不存在重复项以便于理解?