与「;“可比”;java中的类型变量?

与「;“可比”;java中的类型变量?,java,comparable,Java,Comparable,我正在做一项大学作业,我必须将元素存储在“可比较”类型的数组中。例如: protected Comparable storage[]; 将存储在这个数组中的元素要么是所有整数,要么是所有字符串,但它们显然是用“Comparable”类型创建的,而不是创建为int或String 我遇到的问题是比较这些值。在任何给定点,假设数组中填充了实际上是整数的“可比较”元素,我如何比较它们?我知道我必须使用compareTo()方法,但是实现会是什么样子呢?我在线查看了Java文档,它让我更加困惑 简单地说

我正在做一项大学作业,我必须将元素存储在“可比较”类型的数组中。例如:

protected Comparable storage[];
将存储在这个数组中的元素要么是所有整数,要么是所有字符串,但它们显然是用“Comparable”类型创建的,而不是创建为int或String

我遇到的问题是比较这些值。在任何给定点,假设数组中填充了实际上是整数的“可比较”元素,我如何比较它们?我知道我必须使用compareTo()方法,但是实现会是什么样子呢?我在线查看了Java文档,它让我更加困惑

简单地说,在任何给定的点上,数组可能有实际上都是整数的“compariable”类型元素,或者所有元素都是同样使用“compariable”类型生成的字符串。数组中没有整数和字符串的混合和匹配,只有一个或另一个。我想知道如何创建compareTo()方法,以便可以轻松地比较数组中的两个元素,或者任何两个“可比较”元素,如果其中一个大于/小于另一个,则返回1、-1或0


非常感谢您的帮助。我完全迷路了。

您不需要实现/覆盖
compareTo
方法。当您调用compareTo时,将在
Integer
/
String
类上调用此方法


如果您使用自己的自定义类类型填充数组,那么您需要重写
compareTo
方法,而不是当前的赋值要求。也许你可以接受这个挑战来学习更多关于java中的
Comparable

你不需要为Integer和String类实现compareTo方法,因为它们已经被实现和使用了。您所需要做的就是填充可比较的数组,就是这样,如果您对它们调用sort,它们将被正确排序,除非数组中有混合类型的元素(字符串和整数),而您提到的情况并非如此

在文档中,您会发现这两个类已经实现了可比较的:

因为这些类根据多态性实现接口,所以您可以将它们插入到所提到的数组中,而不会出现任何问题

字符串是基于compareTo方法的String类实现进行比较的,根据所提到的文档,compareTo方法将使用字典顺序或按字典顺序进行比较


这基本上意味着字母顺序,如果所有字符都是小写,或者所有字符都是大写,那么ascii值较低的字符在比较中会变小。

所以说,如果我比较的两个变量是可比的1和可比的2。我能简单地把可比的1.比较放在(可比的2)上吗?另外,我的程序没有实现比较器接口。是的,你只需要这样做。我做到了,现在编译器说我有“未检查或不安全”的操作。它想让我用-Xlint重新编译。我相信这只是一个警告,您可以忽略它并尝试编译+executeOkay,所以总结一下,类似于临时的东西。如果临时大于左,compareTo(左)将返回一个大于1的数字,对吗?这对字符串有何作用?但它如何比较“可比较”字符串?如中所示,它将如何确定两个中哪个更大?@Vimzy您已经说过整数不能与字符串进行比较。你的意思是这样说的吗?是的,我的意思是因为整数不会与字符串进行比较,所以不会有问题@avgvstvsI将更新我的答案来解释字符串是如何进行比较的@VimzyYeah,我问的是如何将字符串与字符串进行比较,以及如何确定两者中哪一个更大。