最近我一直在考虑用java为自己创建一种“工具箱”。它将由经常使用但很难实现的标准算法和数据结构组成。(我在想图表、树等)
最好的方法是什么?我正在考虑使用泛型或使用抽象类。这样,我可以让任何想要使用这些方法的对象只需提供一个 getGraphData() 方法或类似的方法。
我认为泛型可能会更好,因为抽象类会迫使我从它继承,这可能会成为问题。
这叫图书馆……
通用的东西应该在 Java 库中。如果缺少某些您想要的东西,您可以尝试其他库,例如 Google Collections。您可能还需要特定于域的库。
两种方法:
方式一:
方式二:
当然,最好查看 STL 算法并以类似的方式对图形算法进行建模。您甚至可以开源您的数据结构和相关算法。通过这种方式,社区可以处理更新的算法、效率考虑、与现有库的集成/集成等。
jrh
大多数情况下,应该使用由真正知道自己在做什么的人编写的预先存在的库——这些库已经过彻底的测试,并使用有效的算法实现以获得良好的性能。
但是,如果确实要制作自己的库,我会说尽量模仿最好的——看看Java 集合和Google 集合是如何设计的。查看提供了哪些类型的接口(List
、Map
等)以及存在哪些抽象类和实现。
然后,如果是出于教育目的,请继续编写自己的实现。它应该是有趣和令人兴奋的,并且绝对具有挑战性。尝试查看行为是否符合预期——编写测试以确保涵盖典型用途和边缘情况。
但是,我建议不要将其用于教育用途以外的实际用途。在学校犯错没什么大不了的,但一旦出现在现实世界中,情况就大不相同了。