3

最近我一直在考虑用java为自己创建一种“工具箱”。它将由经常使用但很难实现的标准算法和数据结构组成。(我在想图表、树等)

最好的方法是什么?我正在考虑使用泛型或使用抽象类。这样,我可以让任何想要使用这些方法的对象只需提供一个 getGraphData() 方法或类似的方法。

我认为泛型可能会更好,因为抽象类会迫使我从它继承,这可能会成为问题。

4

3 回答 3

3

这叫图书馆……

通用的东西应该在 Java 库中。如果缺少某些您想要的东西,您可以尝试其他库,例如 Google Collections。您可能还需要特定于域的库。

于 2009-06-17T13:51:00.600 回答
0

两种方法:

方式一:

  1. 创建类图
  2. 在 Graph 类中创建方法,每个方法对应于您的算法。

方式二:

  1. 创建类Graph(纯数据结构)
  2. 创建类算法
  3. 子类算法来定义你的每个新算法。

当然,最好查看 STL 算法并以类似的方式对图形算法进行建模。您甚至可以开源您的数据结构和相关算法。通过这种方式,社区可以处理更新的算法、效率考虑、与现有库的集成/集成等。

jrh

于 2009-06-17T13:50:32.817 回答
0

大多数情况下,应该使用由真正知道自己在做什么的人编写的预先存在的库——这些库已经过彻底的测试,并使用有效的算法实现以获得良好的性能。

但是,如果确实要制作自己的库,我会说尽量模仿最好的——看看Java 集合Google 集合是如何设计的。查看提供了哪些类型的接口(ListMap等)以及存在哪些抽象类和实现。

然后,如果是出于教育目的,请继续编写自己的实现。它应该是有趣和令人兴奋的,并且绝对具有挑战性。尝试查看行为是否符合预期——编写测试以确保涵盖典型用途和边缘情况。

但是,我建议不要将其用于教育用途以外的实际用途。在学校犯错没什么大不了的,但一旦出现在现实世界中,情况就大不相同了。

于 2009-06-17T14:05:53.503 回答