节点类(Node)中的toString()方法中的返回值 return e.toString;

来源:4-4 链表的遍历,查询和修改

慕UI6522375

2020-04-21

看到这节课中的toString()方法又想起了上上节课中的Node类中的toString()方法返回值 return e.toString; 老师这个节点(Node)类中的toString返回的是什么啊?查了API还是没理解e.toString()表示的什么意思,如果Node类的构造方法E e传入的是Integer对象,那么 e.toString表示什么啊?是表示的传入的这一个节点还是表示传入的当前节点以及之前传入的所有的节点中的e都存放到了这个String对象中了?亦或是单单只是把传入的这个Integer对象转换成了String类型的对象?
并且感觉这个节点(Node)类中的toString方法可有可无啊整个流程都没有用到。纠结这几个问题几天了,麻烦老师帮我解惑图片描述

写回答

1回答

liuyubobobo

2020-04-22

e 是 E 类型的对象,e.toString() 返回的就是 E 这个类型的 toString() 的返回值。比如 E 可以是 Student 类,那么 e.toString() 就返回 Student 类的 toString() 方法返回的字符串。


Node 类的 toString 表示如果我们把 Node 当做字符串处理的时候,比如 print 某个 Node 的时候,对应的字符串是什么。我们定义的 Node 的 toString 的逻辑是返回 e.toString,意思就是 Node 对应的字符串,和 e 对应的字符串是一样的。


如果觉得太奇怪,你可以让 Node 的 toString 返回的是 "Node(" + e.toString() + ")",做一下区分。


我们的 Node 的 toString 在 LinkedList 的 toString 中用到了。

for(Node cur = dummyHead.next ; cur != null ; cur = cur.next)    
    res.append(cur + "->");


在上面的逻辑中,cur 是一个 Node,为什么能作为字符串,append 到 res 后面?就是因为有 toString 方法,帮助我们将 Node 转换成了字符串。


尝试删除 Node 的 toString 定义,看看调用 main 函数中的 System.out.println(linkedList); 会不会出错?


尝试修改 Node 的 toString 方法,看看 main 函数中的 System.out.println(linkedList); 结果变成什么样子?


继续加油!:)

1
0

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程