我想知道何时使用Set和List.On应该决定哪个基础。例如,当我们处理订单应用程序时,我应该使用什么? 列出any = new ArrayList<>(); 要么 设置any = new HashSet(); 或LinkedList。
答案 0 :(得分:2)
这完全取决于您当前的要求
例如,考虑一些关于
的重要观点如果您想以与插入元素相同的方式访问元素,那么您应该使用List
,因为List
是元素的有序集合。您可以使用get(int index)
方法访问它们,而Set
没有此类方法可用。它们的存储顺序无法保证。
如果您的元素包含重复项,请使用List
,因为Set
不允许重复,而如果您的元素是唯一的,那么您可以使用Set
。
考虑LinkedList
和ArrayList
:
LinkedList
很慢,因为它们只允许顺序访问。但是如果你的元素大小经常变化它们会很好,而如果你的元素大小是固定的,那么你应该使用ArrayList
因为它们允许快速随机读取访问,所以你可以在恒定时间内抓取任何元素。 ArrayList
并不好,因为在任何地方添加或删除,但结尾需要将所有后面的元素移位。 ArrayList
不被认为是好的,因为如果你想在中间插入一个新元素(并保持所有元素的顺序相同),那么你将会有在插入元素的那个点之后移动所有内容,而LinkedList
中的这种操作只需要更改一些引用。看看几个数据结构的功能,并根据您的要求,您可以决定在哪里使用哪种数据结构。
另见:
- When to use LinkedList over ArrayList?
- What is the difference between Set and List?
- What Java Collection should I use?
- Insertion in the middle of ArrayList vs LinkedList