需要创建Collection实例的建议

时间:2019-03-14 17:14:57

标签: java collections

因此,我发现Collection作为Interface有许多子接口和子类。通常看到的一件事是使用接口而不是使用实际的类,这提供了灵活性:

List<Interger> L1 = new ArrayList<>();

但这也限制了在实际的Class中使用某些特殊方法(对于ArrayList,则没有那么多特殊方法)。但这可以通过强制转换来解决。

List<Integer> L2 = ((ArrayList<Integer>) L1).clone();

但是,有趣的是LinkedList正在实现CollectionListQueueDeque

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

List<> L1 = new LinkedList<>();
Queue<> Q1 = new LinkedList<>();
Deque<> D1 = new LinkedList<>();
  1. 如果我使用List,那么这似乎是不必要的,因为我可以 List中的ArrayList
  2. 我是否应该始终选择比Interface高1级的Class,在这种情况下,应该选择Deque而不是Queue

我猜这只是令人困惑,因为QueueDeque并没有实现List,但是LinkedList却实现了。而且我不知道为什么会这样?

谢谢

1 个答案:

答案 0 :(得分:1)

根据dependency inversion principle组件应取决于抽象。因此,首先您需要选择最能满足您需求的摘要(例如接口或抽象类)。然后选择具体的实现方式。

没有所有情况下的最佳解决方案。