gpt4 book ai didi

java - 为什么我将 List 和 Node 类分开?

转载 作者:行者123 更新时间:2023-12-01 12:32:58 25 4
gpt4 key购买 nike

让我用查询 link 中提到的 Java 代码来问这个问题.

在同一查询中link ,补充答案说:“一般来说,我们需要将List和Node类分开,你的List应该有一个头,你的Node将有item和next指针。

另外,我的类讲义说,将 List 和 Node 类分开有两个原因。

原因 1:假设用户 X 和用户 Y 指向该列表中的第一个 List_Node

enter image description here

用户X在购物 list 中添加肥皂商品后,情况如下,

enter image description here

所以,用户Y不符合这种情况。

原因 2:

处理空列表。用户 X 指向一个空列表,这意味着 X 为空。

X.nth(1); //Null pointer exception

我的问题:

Reason_1 可以通过在最后一个节点之后插入新节点来处理。 Reason_2 可以作为代码中错误检查的一部分进行处理。那么,为什么我们需要分离 Node 和 List 类呢?

注意:Java 代码具有 int 类型的 item,而不是可以容纳字符串的 Object 类型。我不想再次更改此代码。

最佳答案

Reason_1 could have been handled by inserting new node after last node.

但这正在改变问题。列表是有序的。在现有元素之前或现有元素之后添加元素是不同的操作。数据结构必须能够处理这两种操作,否则它不是一个正确的列表。

Reason_2 could have been handled, as part of error check in the code.

那是行不通的。您的列表抽象的代码无法处理NPE。如果您尝试调用 x.nth(1) 并且 xnull,则会在您之前抛出异常进入实现该列表的任何代码。因此,列表代码中的(假设的)错误处理无法执行。 (Java 异常处理不是这样工作的...)

正如您在评论中正确指出的那样,强制使用列表来处理空列表作为特殊情况的代码将是糟糕的列表 API 设计。

简而言之,这两个理由都有道理。 (国际海事组织)

关于java - 为什么我将 List 和 Node 类分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25799808/

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