Java 创建自己的数据结构类还是使用现有的实现?

Java 创建自己的数据结构类还是使用现有的实现?,java,data-structures,Java,Data Structures,所以我一直在研究数据结构,我可以创建自己的linkedlist类及其函数(insert、remove、length等),但是当我可以简单地执行以下操作时,为什么要这样做呢 LinkedList<>list = new LinkedList<>(); LinkedList=newLinkedList(); 这个问题的一个很好的理由是:Spring模型或Spring POJO 例如,在old Spring中使用类型为Map的bean并将其自动连接可能会很麻烦,但是如果您创建

所以我一直在研究数据结构,我可以创建自己的linkedlist类及其函数(insert、remove、length等),但是当我可以简单地执行以下操作时,为什么要这样做呢

LinkedList<>list = new LinkedList<>();
LinkedList=newLinkedList();

这个问题的一个很好的理由是:Spring模型或Spring POJO

例如,在old Spring中使用类型为
Map
的bean并将其自动连接可能会很麻烦,但是如果您创建了一个扩展
Map
或该失败类型的类,那么它将工作:

public class MyDataContainer extends Map<int, String> {
...
}
公共类MyDataContainer扩展映射{
...
}
另一个用途是当您希望对get或set执行自定义操作时,扩展数据结构类型并重写其getter或setter之一可能会很有用,例如: 在设置或将值放入
列表
映射
或任何您修改过的数据结构之前,请先从额外空格中删除值。
在我的职业生涯中,我实际上已经做了几次这样的工作。

Java语言中的现有实现都是高度优化的。你无法用自定义代码打败它。使用现有的实现。如果你想自定义一些东西,比如算法,就使用自定义的东西。你不需要创建这个。Java泛型允许您执行类似于
List
的操作,其中
T
可以是您想要的任何类型。无需重新发明轮子。除非你是为了学习目的而实施它们(这是一件至少做一次的好事),正如其他人已经告诉你的那样,你应该使用经过战斗测试的优化实现。@akuzminykh我不同意:它们针对一般情况进行了高度优化,并且经过了彻底的战斗测试。然而,基于特定于问题的知识,您可能能够为自己的用例创建更好的东西。然而,你应该有足够的证据来证明现有的实现“不够好”。@AndyTurner-Man,这就是为什么我写了“如果你想定制一些东西,就使用定制的东西”。当然,如果你能为你的具体情况做些更好的事情,那就去做。在这种情况下,我更喜欢委托而不是扩展,例如,因为你不能扩展映射,但必须决定具体的实现。有了代表,你可以把决定权交给客户。我有点不确定这是如何回答这个问题的。或者解决它。@akuzminykh实际上我也没有预料到(接受答案),我已经解决了这个问题:>但是当我可以简单地做以下事情时,为什么我要这么做,因为有时需要创建您自己的数据结构模型。
Generally, this question asked in an interview, design the functionality for LinkedList. 
If you have deep knowledge of LinkedList, then you can design the LinkedList for different languages.
Custom LinkedList implementation will check your deep understanding, how it works internally.