如何决定列表集中应该使用哪个集合?

时间:2016-08-20 13:27:11

标签: java

我想知道何时使用Set和List.On应该决定哪个基础。例如,当我们处理订单应用程序时,我应该使用什么? 列出any = new ArrayList<>(); 要么 设置any = new HashSet(); 或LinkedList。

1 个答案:

答案 0 :(得分:2)

这完全取决于您当前的要求

例如,考虑一些关于

的重要观点
  1. 如果您想以与插入元素相同的方式访问元素,那么您应该使用List,因为List是元素的有序集合。您可以使用get(int index)方法访问它们,而Set没有此类方法可用。它们的存储顺序无法保证。

  2. 如果您的元素包含重复项,请使用List,因为Set不允许重复,而如果您的元素是唯一的,那么您可以使用Set

  3. 考虑LinkedListArrayList

    • LinkedList很慢,因为它们只允许顺序访问。但是如果你的元素大小经常变化它们会很好,而如果你的元素大小是固定的,那么你应该使用ArrayList因为它们允许快速随机读取访问,所以你可以在恒定时间内抓取任何元素。
    • 但是,当您需要大量删除操作时,ArrayList并不好,因为在任何地方添加或删除,但结尾需要将所有后面的元素移位。
    • 当你必须在中间插入任何东西时,
    • ArrayList不被认为是好的,因为如果你想在中间插入一个新元素(并保持所有元素的顺序相同),那么你将会有在插入元素的那个点之后移动所有内容,而LinkedList中的这种操作只需要更改一些引用。
  4. 看看几个数据结构的功能,并根据您的要求,您可以决定在哪里使用哪种数据结构。

    另见:
      - 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