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

How to decide which collection should be used from List Set?

本问题已经有最佳答案,请猛点这里访问。

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


这一切都取决于您当前的要求

例如,考虑一些重要的观点

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

  • 如果元素包含重复项,则使用List,因为Set不允许重复,而如果元素是唯一的,则可以使用Set

  • 至于LinkedListArrayList被认为:

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

    另见:
    - 何时使用LinkedList over ArrayList?
    - Set和List有什么区别?
    - 我应该使用什么Java Collection?
    - 在ArrayList和LinkedList的中间插入