gpt4 book ai didi

java - 链表的泛型实现和交换两个泛型对象

转载 作者:行者123 更新时间:2023-11-29 05:06:58 27 4
gpt4 key购买 nike

实现 Comparable 的通用类

我的第一个问题是如何正确实现实现 compareTo 的通用类。我当前的类定义是:

public static class Node<T> implements Comparable<Node<T>>{

我的 compareTo 方法是:

public <T extends Comparable<T>> int compareTo(Node<T> n){

1a.这些定义正确吗?

1b。我应该如何完成我的 compareTo 方法?我在网上找到的许多文献都提到在方法本身中使用 .compareTo(),这对我来说没有意义。

交换链表中的两个节点:

我当前的方法定义是

public void swap(Node<T> n1, Node<T> n2){
// swap
}
  1. 是否可以在单链表实现中交换两个节点,或者交换方法是否本质上需要链表的双链实现?

最佳答案

1a. Are these definitions correct?

不完全是。 compareTo 的定义声明了一个类型变量,这可能是错误的:

public <T extends Comparable<T>> int compareTo(Node<T> n){

(它实际上不应该编译。)

它应该只是:

@Override
public int compareTo(Node<T> n){

1b. How should I complete my compareTo method?

这取决于您要比较的内容。因为你没有具体说明,我们不知道。 ; )

Much of the literature I have found online has referenced using .compareTo() within the method itself, which does not make sense to me.

这是一个典型用法的例子:

// saying T must also be Comparable:
// it's possible you are supposed to do
// this for your own Node declaration too
// vvvvvvvvvvvvvvvvvvvvvvv
class Node<T extends Comparable<T>> implements Comparable<Node<T>> {
T data;

@Override
public int compareTo(Node<T> that) {
return this.data.compareTo( that.data );
}
}

现在我们可以比较节点,但它实际上委托(delegate)给任何数据。我们不知道也不关心数据是什么(尽管它不能为空),只是它实现了 Comparable

2. Is it possible to swap two nodes in a singly linked list implementation, or does the swap method inherently require a doubly linked implementation of a linked list?

这里的提示是您不需要交换节点,无论它们的数据是什么。

关于java - 链表的泛型实现和交换两个泛型对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30090796/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com