人们是否通常构造自己的树类(带有节点等),因为Java中没有内置的树(有TreeSet和TreeMap,但没有Tree)。创建自己的树类是常见的吗?还是只有在编程面试中才会这样做?
实际上,您通常用节点构建树。而且通常对节点类有很多特殊要求,因此最好您自己构建它。
有作为库的树视图UI组件。如果你想使用那些,你也应该使用它们的树/节点系统。
但通常情况下,构建自己的类要容易得多、快得多、效率高得多。有时需要泛型,有时需要固定数量的子级,或者树内的一些特殊排序行为,比如红树/黑树。堆映射。等等。有时会有一些特殊的技巧和结构的改进,比如帕特里夏·特里。有时您需要额外的属性用于排序/排序、节点/顶点之间的区分等等。
因此,如果有人创建了一个树/节点的基类,在大多数情况下,它要么是非常无效的,要么您必须进行太多的额外实现,从基类继承不会为您提供任何优势。所以简单地自己写,对于一个坚实的基本实现来说,这大约需要50-100行,这是一个值得学习的好东西,而且最好的:你对你的结构烂熟于心,并且可以自由地改变它们。
Algebraic Data Types 入门 在前面的章节中,我们谈了一些 Haskell 内置的型别和 Typeclass。而在本章中,我们将学习构造型别和 Typeclass 的方法。 我们已经见识过许多态别,如 Bool、Int、Char、Maybe 等等,不过在 Haskell 中该如何构造自己的型别呢?好问题,一种方法是使用 data 关键字。首先我们来看看 Bool 在标准函式库中的
问题内容: 当未定义构造函数时,它工作正常,但如果我定义了一个参数化的构造函数而不是默认的构造函数, 并且在创建对象时未传递任何值, 则会出错。我认为构造函数是预定义的。 如果定义了参数化构造函数,为什么需要定义默认构造函数?默认构造函数不是预定义的吗? 问题答案: 仅 当您自己未定义任何构造函数时, 才会 自动创建默认(无参数)构造函数。 如果需要两个构造函数,一个带有参数,另一个不带参数,则需
问题内容: 除了* 使用如下所示的反射检查 之外 ,是否有任何方法 要求 类具有默认(无参数)构造函数?(以下方法可以工作,但是很hacky,反射速度很慢) * 问题答案: 您可以为此构建一个注释处理器。注释处理器是在编译时运行的编译器插件。它们的错误显示为编译器错误,甚至可能停止构建。 这是一个示例代码(尽管我没有运行它): 如果引入注释(例如RequiresDefaultAnnotation)
请帮我从这段代码中查找错误。我还是新手,我不知道这是否正确。我确实有一个错误。这就是错误:类Person中的构造函数Person不能应用于给定类型;super();^requiredent:String,String,String找到:没有参数原因:实际和正式参数列表长度不同这是我的代码: 编辑:如果我对Person和Address类都这样做。我只能有三个ARG构造函数。如何调用one-arg构造
问题内容: 这对您来说可能听起来很愚蠢,但是为什么我需要在s中定义一个空的构造函数? 我看到的每个教程都说:每个实体都需要一个空的构造函数。 但是Java总是给您一个默认的不可见的空构造函数(如果您不重新定义一个的话)。 谢谢。 我认为这是一个语义问题。我所理解的“需求”是书面的。 含义:始终在您的实体中编写一个空的构造函数。 例: 但是,当您不重新定义Java时,Java总是会为您提供一个空的构
问题内容: 我有两个类,和,扩展了前一个类。 具有以下构造函数: 我将注意到所有实例变量都已设置为private。 同时,具有以下构造函数: 但是,这为我的构造函数引发了“找不到符号”错误。 我尝试使用,但是我的超类的私有范围阻止了这种情况。 我发现向我的构造函数中添加字段并允许我调用超级构造函数,但是我想知道是否存在一种无需在子类构造函数中传递其所有参数的情况下调用超级构造函数的方法? 问题答案