我写了一半,但不能100%正确。任何人都可以帮助我吗?
这是我的问题:
编写一个参数化类Triple,表示某种类型的三重奏(例如,三个字符串,整数等)。对于Triple类定义:
-getElement方法,接收整数(1,2或3)并返回相应的成员。在非法参数的情况下,抛出一个IllegalArgumentExpression异常-setElement,它接收两个参数:一个整数(1,2或3)以及作为三个成员放在相应位置的值(例如,setElement( 2,3)设置trio的3到y值) - 一个带有3个参数的构造函数,用于设置Triple的初始值
然后你应该编写ComparableTriple类,它代表三元组。三元组的成员必须具有可比性(实现Comparable接口)。然后展开ComparableTriple类以实现Comparable接口,以便三元组可以通过位置进行比较。例如,(2,6,1)在(3,4,5)之前的等级中,但在(2,6,-4)之后。相同的模板可以应用于String等。
主要代码示例:
三重t1 =新的ComparableTriple <>(2,6,1); int x = t1.compareTo(t1); //应该是0
//Triple class I wrote
public class Triple<T> {
T x, y, z;
public Triple(T x, T y, T z) {
this.x = x;
this.y = y;
this.z = z;
}
public T getElement(int position) {
if (position == 1) {
return x;
} else if (position == 2) {
return y;
} else if (position == 3) {
return z;
} else throw new IllegalArgumentException();
}
public void setElement(int position, T value) {
if (position == 1) {
x = value;
} else if (position == 2) {
y = value;
} else if (position == 3) {
z = value;
} else throw new IllegalArgumentException(); }
}
我尝试编写ComparableTriple重写CompareTo方法但无法找到确切的解决方案。它不是那么复杂,但我是Generics的新手,无法解决一些问题。任何人都可以帮我解决剩下的代码吗?
public class Triple<T> implements Comparable<Triple<T>> {
... your code here
// functional interface Comparable will force you to override the method
}
但是你可能希望有一些T扩展的超类,这样你就可以访问比较的字段。
例:
public class Triple<T extends Number> implements Comparable<Triple<T>>
如果你不想承诺T是什么,当然可以与Collections.sort(可比较)进行内联比较。
这应该让你开始。如果卡住,请回复/编辑。干杯。
(这不是意图的解决方案)。仿制药是一种痛苦,需要勉强通过才能擅长。