java-如何在类中使用Comparable作为泛型参数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-如何在类中使用Comparable作为泛型参数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3574字,纯文字阅读大概需要6分钟。
内容图文
![java-如何在类中使用Comparable作为泛型参数](/upload/InfoBanner/zyjiaocheng/660/0c34c712a02b44ce93e4f239aee3fe5a.jpg)
我在数据结构课程中有家庭作业,问题是:
实现双链表类.
方法:
>显示()
> length()或size()
> insertSorted(可比较)
> insertToEnd(可比)
> insertToHead(可比较)
>删除(可比)
>布尔搜索(可比)
您必须在JAVA中执行此操作
创建一个应用程序层来测试您的类及其方法.
将所有源文件压缩为一个文件,并将其重命名为CS214HW1_first_lastName.zip将您的名字放在文件名中.如果需要,添加ReadMe.txt文件以获取更多信息,例如编译.
我正确地实现了所有操作,并且代码运行正常,但是我使用了例如:insertSorted(int)而不是insertSorted(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);
}
}
有人,请告诉我在课程开始时要进行哪些更改.
>使用扩展还是实现Comparable< E>要不然是啥!
>并且我应该对方法insertToHead(Comparable)进行哪些更改
>我应该对主机进行哪些更改.
解决方法:
您可能想研究一下generics的工作原理.基本思想是,您希望设置类,以便它不会确切地知道对象的特定类型,但可以给您一些提示,以表明它可以期望已声明的泛型类型的事物的类型.
对于您的情况,您希望设置列表,以便可以创建可以比较的任何内容的链接列表. Java有一个您提到的类Comparable< E>.这告诉Java,它将能够在提供的对象上调用诸如compareTo之类的方法.
更具体地说,您的最后一个问题是:
>使用以下样式的类声明MyClass< MyGenericType扩展Comparable< MyGenericType>>.在您的情况下,DLL< E>扩展了Comparable< E>.
>切换方法参数以接受E我们声明的泛型类型.
>您应该使用Integer类而不是原始类型int,并将列表的创建更改为DLL< Integer>. dll =新的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 method比较对象,这可能对排序提示提示有用.
该文档页面对如何使用此方法提供了很好的解释.您应该注意,在他们的文档中,他们使用称为T而不是E的泛型类型,只要您的程序唯一,就可以随意调用它.
编辑:
排序方向上的每个提示:
扩展Comparable类的对象具有一个称为compareTo的方法,因此可以调用此方法:
object1.compareTo(object2);
此方法返回一个int,它将是:
>>当object1大于object2时为0
当object1等于object2时> = 0
><当object1小于object2时为0
我不想付出太多,因为这是一项家庭作业,但这是我的提示:
上面的代码设置类的方式,您可以通过调用以下命令来告知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
}
有关更多信息,请参见Docs on Integer.
内容总结
以上是互联网集市为您收集整理的java-如何在类中使用Comparable作为泛型参数全部内容,希望文章能够帮你解决java-如何在类中使用Comparable作为泛型参数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。