java - 创建java通用数据结构

标签 java generics

我正在构建一个数据结构以了解有关 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/

相关文章:

java - 将 float 转换为 double 而不会丢失精度

c# - Autofac:在泛型方法中解析泛型接口(interface)

generics - 使用泛型类型时如何使用整数文字?

java - 通用双向链表

java - Hibernate:检查哪个实体的字段被修改

java - ActionBar 溢出未出现

java.sql.SQLException : After end of result set in mysql 异常

java - 如何保护一种方法免受不同请求的影响

c# - 理解泛型与继承类的结合

c# - Kotlin通用类限制,例如C#'s “class”关键字