在Java中对泛型进行排序
|
我必须实现一个通用的AVL树作为作业。它的定义如下:
public class AVL<Key,Elem>;
问题是我假设在某个时候,我将不得不比较键来决定我在节点的哪一侧分配元素。出于此作业的目的,整数将用作键。
由于没有其他限制或信息,因此我首先想到的是假设Key始终是Integer。但是,这使通用的“键”成为多余,而且我认为这不是老师所期望的。因此,我认为最好的解决方案包括强制执行Key实现比较器时传递的任何内容或类似的东西(我真的从未与Comparator一起工作过,只是猜测),然后使用该比较器比较Keys ==,<,>和!=运算符的说明。但是,我不知道如何去做。有什么提示吗?
提前致谢。
没有找到相关结果
已邀请:
2 个回复
埠仙俊
,并使用
接口所需的and2ѭ方法,该方法由
实现。
嫩昧竞莫
和
实现要么使用
并调用其
方法,要么假定键实现
,然后调用
。大多数都提供这两种方法,具体取决于所使用的构造函数。 (EnumMap / EnumSet不支持,因为它们仅支持按声明顺序对枚举值进行内置排序。) “ 11”方法要求密钥始终以相同的方式排序,并且将用于具有规范顺序(例如整数)的密钥,您要在此使用此顺序。 ѭ12'方法更灵活,因为您可以将相同的键对象用于顺序不同的地图,也可以将其用于无法控制或没有规范顺序的键(例如列表,树/图等。您还可以使用它来使用整理器(这是实现Comparator的类),根据除纯Unicode值(例如,基于语言环境)以外的其他条件对字符串键进行排序。 两者都需要对键进行总排序,但是我想这对于您的AVL树也是必需的。 这是一个Comparator实现,可在任何可比较的对象上使用,因此(可以在内部)将其用作Comparable变体的适配器。