我正在构建一个数据结构以了解有关 java 的更多信息。我知道这个程序可能没用。
这就是我想要的。我想创建一个存储最小 3 个值的数据结构。如果值很高,则忽略它。当存储值时,我还想将它们放在正确的位置,这样我就不必稍后对它们进行排序。我可以通过调用 add 方法输入值。
假设我想加上 20, 10, 40, 30,结果将是 [10,20,30]。请注意,我只能保存 3 个最小值,并且它会在我放置它们时存储它们。
我也知道有很多更好的方法可以做到这一点,但这只是出于学习目的。
问题:我需要帮助创建添加方法。我写了一些代码,但我被添加方法困住了。请帮忙。
我的想法:我们可能必须在 add 方法中使用迭代器?
public class MyJavaApp {
public static void main(String[] args){
MyClass<Integer> m = new MyClass<Integer>(3);
m.add(10);
m.add(20);
m.add(30);
m.add(40);
}
}
public class MyClass<V extends Comparable<V>> {
private V v[];
public MyClass(int s){
this.v = (V[])new Object[s];
}
public void add(V a){
}
}
最佳答案
这是您必须实现的 add 方法的粗略草图。
比较元素时,您必须使用 compareTo
方法的适当实现。
public void add(V a){
V temp = null;
if(a.compareTo( v[0]) == -1 ){
/*
keeping the v[0] in a temp variable since, v[0] could be the second
smallest value or the third smallest value.
Therefore call add method again to assign it to the correct
position.
*/
temp = v[0];
v[0] = a;
add(temp);
}else if(a.compareTo(v[0]) == 1 && a.compareTo(v[1]) == -1){
temp = v[1];
v[1] = a;
add(temp);
}else if(a.compareTo(v[1]) == 1 && a.compareTo(v[2]) == -1){
temp = v[2];
v[2] = a;
add(temp);
}
}
因此 v
数组将包含最低元素。
希望这有帮助。
关于java - 创建java通用数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33685678/