数据结构和实现,为什么我不应该只使用数据收集API?

时间:2015-03-19 02:20:52

标签: java data-structures

经过长时间在线搜索这个主题后,我找不到合适的答案。

我是最近的java学习者,每天我都会遇到令人兴奋的事情要学习。最近,我一直在学习数据结构,现在了解Big-O理论。我确实理解了知道数据结构及其实现的重要性,无论它是LinkedList还是BST。

在处理真实的Java项目时,编写数据结构类或使用SDK提供的JAVA数据结构API是否常见?

在IDE中,如果我说实现Java的本机LinkedList,我可以访问它的所有本机方法,这使得事情变得快速而简单。

我确信有些人可能需要扩展这些类以适应某些任务。

3 个答案:

答案 0 :(得分:1)

链表是一种无聊的数据结构。您可以做的事情很少,实际上会以任何有意义的方式改进或扩展。一旦你开始寻找更有趣的数据结构,比如缓存不经意的搜索树,或者可以堆叠的堆,或者可以连接的deques,或者2-3个手指树,如果你仔细研究它们,你可能会发现更有可能做有趣的事情,实现他们(或他们的一部分)自己,并熟悉他们的结构。直接实现事物而不是仅仅为了做到这一点而使用公共API是不可能完成任何事情的,但是如果你能看到一种方法来实现它更好,那就是另一个故事。

答案 1 :(得分:0)

通常,您可以编写自己的数据结构来对数据进行分组。您可以在类中使用java集合,并且您可能拥有类的java集合,通常不会编写自己的集合类。

e.g。

// pseudo code only
class Plane
{
    ...
    private string id;
    private string type;
    private List<Passengers> passengers;
    ...
}

...

List<Plane> fleet = ...;

答案 2 :(得分:0)

  

我目前正在使用Eclipse,如果我说实现Java的本地LinkedList,我可以访问它的所有本机方法,这使得事情变得快速而简单。

在实践中,它通常只是让它变得快速而简单&#34;打破你的代码。一般来说,几乎可以肯定只使用内置的Java集合类型,因为

  • 他们已经被很多非常聪明的人长期优化
  • 他们的测试要比你能写的任何东西都好得多
  • 他们的目的是让您不会意外地破坏任何内部实施
  • 它们可以让您保持与使用集合的其他Java库的兼容性

编写自己的低级数据结构几乎不是一个好主意。