【发布时间】:2018-02-19 07:37:24
【问题描述】:
我必须使用Collection,我不确定使用List 或Set。此集合必须排序,但不是按插入顺序而是按另一个,因此每次添加新项目时,都应执行Comparator 以重新排序Collection。因此,出于这个原因,ArrayList 可能是最佳选择。
从Collection 中删除对象也必须是可能的,此外,我非常感谢使用removeIf 方法,因此Set 将是这里的最佳选择。
获取和迭代Collection会是重复次数最多的场景,所以在这种场景下一定有不错的表现。
看到这一点,我认为Set 将是一个不错的决定,但是,我正在考虑在添加项目时将Set 转换为List,然后,一旦使用了列表,就将其转换回到Set。是不是表现不好?你怎么看?
提前致谢
【问题讨论】:
-
您希望您的
Collection能够包含重复元素吗? -
因此,每次添加新项目时,都应执行 Comparable 以对 Collection 重新排序。因此,出于这个原因,ArrayList 可能是最佳选择 - 不。实际上,
ArrayList是按插入顺序排序的,这是您不想要的。Set会在您每次广告元素时进行排序,因此这将是这里的最佳选择。 -
你能详细说明你想用这个列表实现什么吗?那么我们或许可以为您提供更好的建议
-
你觉得 TreeSet 怎么样?
-
你看过
TreeSet吗?为什么需要Set才能使用removeIf?这是所有Collections 的默认方法。在 list 和 set 之间转换肯定没有帮助,因为你会失去顺序(当然,除非你转换为TreeSet,但无论如何你不需要列表)。
标签: java performance list collections set