java - 用Java编写循环的首选方法是什么。请看下面的代码
问题描述
我正在尝试将节点 ( newNode
) 添加到链表的末尾,为此,我正在尝试遍历到链表的末尾。
我首选的方法是创建head
对列表的引用,然后解析直到我们到达最后一个元素。为此,我通常使用 while 循环。
Node ptr = head;
while (ptr.next != null) {
ptr = ptr.next;
}
ptr.next = newNode
我遇到了这个实现相同的for循环
Node p, q;
for (p = head; (q = p.next) != null; p = q);
p.next = newNode;
我习惯了 Python 和“pythonic”的编码方式。因此,我想知道 Java 是否有更首选的方式?经验丰富的 Java 开发人员更喜欢上述两种方法中的哪一种?
解决方案
尽管这是一个主观问题,但每个人(或大多数人)都会同意第二个选项不可读。我错过;
了最后的注意。
使您的代码可读且易于理解。不要让它看起来很聪明。
注意:这并不意味着您不应该使用for循环。使for循环等同于while循环。
for (Node ptr = head; ptr.next != null;) {
ptr = ptr.next;
}
或者,至少在{}
您的for循环代码中添加一个空主体。
for (p = head; (q = p.next) != null; p = q) {
}
我已经看到静态代码分析器规则设置为当循环有一个空的主体时编译/构建失败(像上面那样显式或者;
在你的问题最后使用 a 时)。
推荐阅读
- ruby-on-rails - 没有 ActiveRecord 的 Rails Draper Gem Association 装饰
- c# - 链接服务器“FDMEE_SIMPHONY”的 OLE DB 提供程序“OraOLEDB.Oracle”返回消息“ORA-00903:无效表名”
- sql - DateDiff 函数为客户出生日期增加了一年
- django - Django:注释(总和(案例(当())))
- php - 在 CPanel 中安装 Wordpress 后网站丢失
- reactjs - React:如何在每次路由更改时获取当前路由路径?
- c++ - 显然类模板成员的错误初始化编译得很好
- r - R Shiny Dynamic Report Download
- python-3.x - Turtle onclic doesn't work as expected, moving object that was not clicked
- json - Pandas Dataframe 行作为格式化的 JSON 输出