与java中的“Comparable”类型变量进行比较?

时间:2014-03-31 03:53:32

标签: java comparable

我正在进行大学任务,我必须将元素存储在“可比较”类型的数组中。例如:

protected Comparable storage[];

将存储在此数组中的元素将是所有整数或所有字符串,但它们显然是使用“Comparable”类型创建的,而不是创建为int或String。

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

总而言之,在任何给定的点上,数组可能具有实际上都是整数的“可比较”类型元素,或者所有元素都是使用“可比较”类型制作的字符串。数组中的整数和字符串没有混合和匹配,它只是一个或另一个。我想知道如何制作compareTo()方法,以便我可以轻松地比较数组中的两个元素,或任何两个“可比较”元素,并返回说1,-1或0如果是比其他更多/更少

非常感谢任何帮助。我完全迷失了。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true

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

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

http://en.wikipedia.org/wiki/Lexicographical_order

如果所有字符都是小写字母或者所有字符都是大写字母,则基本上表示字母顺序,而ascii值较低的字符则相对较小。