Java 需要创建集合实例的建议吗

Java 需要创建集合实例的建议吗,java,collections,Java,Collections,所以我发现Collection作为接口有很多子接口和子类。一件常见的事情是使用接口而不是使用实际的类,这允许灵活性: List<Interger> L1 = new ArrayList<>(); 然而,有趣的是,LinkedList正在实现收集,列表,队列,Deque 那么,共同使用LinkedList的最佳方案是什么 List<> L1 = new LinkedList<>(); Queue<> Q1 = new LinkedLis

所以我发现
Collection
作为
接口
有很多子接口和子类。一件常见的事情是使用接口而不是使用实际的类,这允许灵活性:

List<Interger> L1 = new ArrayList<>();
然而,有趣的是,
LinkedList
正在实现
收集
列表
队列
Deque

那么,共同使用
LinkedList
的最佳方案是什么

List<> L1 = new LinkedList<>();
Queue<> Q1 = new LinkedList<>();
Deque<> D1 = new LinkedList<>();
List L1=新的LinkedList();
队列Q1=新的LinkedList();
Deque D1=新的LinkedList();
  • 如果我使用
    列表
    ,那么它似乎没有必要,因为我可以
    列表
    来自
    数组列表
  • 我是否应该始终选择仅比
    高一级的
    接口
    ,在本例中,是
    Deque
    而不是
    队列
  • 我想这只是因为
    Queue
    Deque
    没有实现
    List
    ,但是
    LinkedList
    实现了。我不明白为什么会这样

    谢谢,

    根据组件应该依赖于抽象。因此,首先您需要选择最符合您需要的抽象(例如接口或抽象类)。然后选择具体的实施


    没有适用于所有情况的最佳解决方案。

    这里没有“最佳”解决方案。您需要使用什么样的功能?您是否需要在
    List
    Queue
    Deque
    中定义的那些功能?因为您可以有
    Queue
    Deque
    的实现,它们不是列表,例如,
    PriorityQueue
    。您应该选择一个声明的类型来满足您对对象的所有需求。通常,最通用的类型。如果你不得不沮丧,那么你的选择是错误的(在这种情况下,你认为从更一般的类型中获得的任何灵活性都是虚幻的)。@JohnBollinger谢谢!永远避免沮丧!但是你会说通常人们会选择
    ArrayList
    上面的
    LinkedList
    来制作
    列表
    ?@code\u Control\u jxie0755查看此处以了解更多详细信息@Ruslan谢谢,非常有用!
    List<> L1 = new LinkedList<>();
    Queue<> Q1 = new LinkedList<>();
    Deque<> D1 = new LinkedList<>();