如何在类中使用Comparable作为泛型参数

塔里克观众

我在数据结构课程中有家庭作业,问题是:


实现双链表类。

方法:

  • display()

  • length() 要么 size()

  • insertSorted(Comparable)

  • insertToEnd(Comparable)

  • insertToHead(Comparable)

  • delete(Comparable)

  • boolean search(Comparable)

您必须在JAVA中执行此操作

创建一个应用程序层来测试您的类及其方法。将所有源文件压缩到一个文件中,并将其重命名为CS214HW1_first_lastName.zip将您的名字放在文件名中。如果需要,添加ReadMe.txt文件以获取更多信息,例如编译。


我正确地实现了所有操作,并且代码运行良好,但是我使用了例如:insertSorted(int)代替insertSorted(Comparable),因为我不知道该怎么做。

我在网上搜索,并阅读了(Comparable的JAVA文档,但这还不够:(

有人可以帮忙吗,这很重要吗?

这是我的一些代码,我无法全部编写,因为我不希望我的朋友得到相同的代码。

如果有相同的代码,我将取零。


码:

class DLL {    
    class Node {
        Node next;
        Node prev;
        int data;

        Node() {
            next = null;
            prev = null;
            data = 0;
        }

        Node(int dt) {
            next = null;
            prev = null;
            data = dt;
        }
    }

    Node head;

    void insertToHead(int dt) {    
        if (head == null) {    
            head = new Node(dt);    
        }    
        else {
            head.prev = new Node(dt);
            head.prev.next = head;
            head = head.prev;
        }
    }

    public static void main(String args[]) {    
        DLL dll = new DLL();

        dll.insertToHead(1);
        dll.insertToHead(2);
        dll.insertToHead(3);
    }
}

请有人告诉我在开始时要进行哪些更改class

  1. 我们使用extends或implementsComparable<E>还是什么了?

  2. 我应该对方法进行哪些更改 insertToHead(Comparable)

  3. 我应该怎么做main

农夫乔

您可能想研究泛型如何工作。基本思想是,您希望设置类,以便它不会确切知道对象的特定类型,但可以给您一些提示,以表明它可以期望已声明的泛型类型的事物的类型。

对于您的情况,您希望设置列表,以便可以创建可比较的任何内容的链接列表。Java有一个class您已经提到for,它Comparable<E>告诉Java它将能够调用compareTo所提供对象上的方法

更具体地说,您的最后一个问题是:

  1. 使用以下样式的类声明MyClass<MyGenericType extends Comparable<MyGenericType>>就你而言DLL<E extends Comparable<E>>

  2. 切换方法参数以接受E我们声明的泛型类型。

  3. 您应该使用class Integer而不是原始类型int,并将列表的创建更改为DLL<Integer> dll = new DLL<Integer>()

提供代码的完整更新版本:

public class DLL<E extends Comparable<E>> {
    class Node {
        Node next;
        Node prev;
        E data;

        Node() {
            next = null;
            prev = null;
            data = null;
        }

        Node(E dt) {
            next = null;
            prev = null;
            data = dt;
        }
    }

    Node head;

    void insertToHead(E dt) {
        if (head == null) {    
            head = new Node(dt);
        }    
        else {
            head.prev = new Node(dt);
            head.prev.next = head;
            head = head.prev;
        }
    }

    public static void main(String args[]) {    
        DLL<Integer> dll = new DLL<Integer>();

        dll.insertToHead(1);
        dll.insertToHead(2);
        dll.insertToHead(3);
    }
}

这个新的实现应该为如何进行其他一些家庭作业提供提示。例如,您现在可以仅通过对象的compareTo方法比较对象,这可能对提示提示进行排序有用

该文档页面对如何使用此方法提供了很好的解释。您应该注意,在他们的文档中,他们使用称为T而不是的泛型类型E,只要您的程序唯一,就可以随意调用它。

编辑:

排序方向上的每个提示:

扩展Comparable类的对象有一个方法,compareTo该方法被设置为可以调用:

object1.compareTo(object2);

此方法返回int,它将是:

  • > 0 当object1大于object2时
  • = 0 当object1等于object2时
  • < 0 当object1小于object2时

我不想付出太多,因为这是一项家庭作业,但这是我的提示:

该方法上面的代码设置你的类,你就可以告诉之间的关系NodeA,并NodeB通过调用:

NodeA.data.compareTo(NodeB.data)

这将返回一个整数,该整数将根据上面的列表提供您的信息。

<=>===运营商可能会在发现Integer类的compareTo方法。

就像是:

public int compareTo(Object o) {
    int otherNumber = ((Integer) o).intValue();
    int thisNumber = this.intValue();
    if (otherNumber > thisNumber) {
        return 1;
    } else if (otherNumber < thisNumber) {
        return -1;
    } else {
        return 0;
    }
}

但更有可能他们只是做类似的事情:

public int compareTo(Object o) {
    return this.intValue() - o.intValue(); // possibly normalized to 1, -1, 0
}

有关更多信息,请参阅文档Integer

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在函数调用中使用Typescript泛型类构造函数作为参数

来自分类Dev

如何在参数需要类中使用泛型

来自分类Dev

在方法中使用泛型类作为参数

来自分类Dev

如何在Java中将泛型列表类作为参数传递给泛型方法?

来自分类Dev

如何在Java中将泛型列表类作为参数传递给泛型方法?

来自分类Dev

如何在基类的方法中使用泛型指定out参数的类型?

来自分类Dev

如何使用已知类型作为参数创建具有泛型的泛型类?

来自分类Dev

如何在C#中的泛型类中使用泛型类的对象?

来自分类Dev

如何在泛型参数中使用Java Reflection

来自分类Dev

如何在方法参数中使用泛型类型投影?

来自分类Dev

如何在TypeScript中使用泛型检测类实例

来自分类Dev

如何在类中使用扩展的泛型类型的类型?

来自分类Dev

泛型类作为参数

来自分类Dev

如何在非泛型静态类的多个方法中使用相同的泛型类型

来自分类Dev

如何在泛型类中使用参数java.lang.reflect.Type分配分配类型

来自分类Dev

泛型类使用泛型参数

来自分类Dev

在 C# 中使用泛型类型作为参数

来自分类Dev

使用泛型作为参数

来自分类Dev

如何在HashMap中使用泛型?

来自分类Dev

如何在Scala中使用泛型

来自分类Dev

如何在Scala中使用泛型

来自分类Dev

在类泛型中使用任意数量的参数-Java

来自分类Dev

在Java泛型参数中使用父类

来自分类Dev

在Kotlin中使用类型Comparable <T>的数组创建泛型类吗?

来自分类Dev

在Kotlin中使用类型Comparable <T>的数组创建泛型类吗?

来自分类Dev

如何在TypeScript中使类泛型成为可选

来自分类Dev

如何在Arrow函数中使用Typescript泛型添加两个参数

来自分类Dev

如何在C#中使用抽象约束实例化泛型类

来自分类Dev

如何在Swift中使用泛型对另一个类进行子类化?

Related 相关文章

  1. 1

    如何在函数调用中使用Typescript泛型类构造函数作为参数

  2. 2

    如何在参数需要类中使用泛型

  3. 3

    在方法中使用泛型类作为参数

  4. 4

    如何在Java中将泛型列表类作为参数传递给泛型方法?

  5. 5

    如何在Java中将泛型列表类作为参数传递给泛型方法?

  6. 6

    如何在基类的方法中使用泛型指定out参数的类型?

  7. 7

    如何使用已知类型作为参数创建具有泛型的泛型类?

  8. 8

    如何在C#中的泛型类中使用泛型类的对象?

  9. 9

    如何在泛型参数中使用Java Reflection

  10. 10

    如何在方法参数中使用泛型类型投影?

  11. 11

    如何在TypeScript中使用泛型检测类实例

  12. 12

    如何在类中使用扩展的泛型类型的类型?

  13. 13

    泛型类作为参数

  14. 14

    如何在非泛型静态类的多个方法中使用相同的泛型类型

  15. 15

    如何在泛型类中使用参数java.lang.reflect.Type分配分配类型

  16. 16

    泛型类使用泛型参数

  17. 17

    在 C# 中使用泛型类型作为参数

  18. 18

    使用泛型作为参数

  19. 19

    如何在HashMap中使用泛型?

  20. 20

    如何在Scala中使用泛型

  21. 21

    如何在Scala中使用泛型

  22. 22

    在类泛型中使用任意数量的参数-Java

  23. 23

    在Java泛型参数中使用父类

  24. 24

    在Kotlin中使用类型Comparable <T>的数组创建泛型类吗?

  25. 25

    在Kotlin中使用类型Comparable <T>的数组创建泛型类吗?

  26. 26

    如何在TypeScript中使类泛型成为可选

  27. 27

    如何在Arrow函数中使用Typescript泛型添加两个参数

  28. 28

    如何在C#中使用抽象约束实例化泛型类

  29. 29

    如何在Swift中使用泛型对另一个类进行子类化?

热门标签

归档