在没有引用传递资源的情况下,如何在java中简化这些代码
How do I simplify this code in java without the resource of passing by reference?
我已经习惯了通过引用使用c++,现在我开始用Java编写更多代码。在leetcode解决问题时,我遇到了一个问题:我试图使用这段代码,所以我不必经常重写这三行。
public void copyAndMoveNodes(ListNode tail, ListNode nodeToCopy) {
tail.next = new ListNode(nodeToCopy.val);
tail = tail.next;
nodeToCopy = nodeToCopy.next;
}
我希望它在c++中也能像这样工作:
void copyAndMoveNodes(ListNode* &tail, ListNode* &nodeToCopy) {
ListNode newNode = new ListNode(nodeToCopy.val);
tail->next = &newNode;
tail = tail->next;
nodeToCopy = nodeToCopy->next;
}
但我发现,在第一段代码中,我只传递了java中对象引用的副本作为writen。
有可能用Java重写它以类似地工作吗?我多次使用这三个命令的序列,但我不想每次都写,这会使代码更加混乱。
解决方案是一个额外的返回值-用于机械翻译。
param = f(param, x);
当有两个引用时非常难看:
- 一个参数为
ListNode[]
的void方法 - 一个参数为CCD_ 2的void方法
最好尝试一下流。在集合类上没有问题,在持有下一个字段的节点类上,仍然可以这样做:
Stream.iterate(rootToCopy, node -> node.next != null, node -> node.next)
.forEach(node -> { ... });
即使它会在一对节点上或类似的节点上。
因此,我的结论是:切换到java集合类并对整个列表进行操作使用CCD_ 3。了解了具有引用能力的C++和java,我不觉得在java中有更抽象的风格很难:性能仍然可以,可读性很好,可写性需要练习,表现力和紧凑性都很好。
在第一阶段移植软件的最佳方法是内联方法的代码。
对java:语言设计f(x)
永远不会将变量x
更改为提高软件质量/代码检查器。
相关文章:
- 尝试用java代码编译和运行c++代码
- 尝试在 QT 项目中调用 Java 代码时未找到类异常
- 使用 jni 将返回带有模板的对象的 Java 代码转换为 c++
- SWIG:如何处理生成的 Java 代码中的指针
- 使用 CMake 和 Maven 构建C++和 Java 代码,并捆绑在一个罐子里
- 无法将Android WebView渲染到C 和Java代码之间共享的外部纹理中
- 当我从java代码执行C++时不显示任何输出
- 从用户控制台获取输入 - Java 代码
- 使用大多数Java代码制作可执行文件,但可能添加了其他语言
- 从C++调用 java 代码:exception java.lang.NoSuchMethodError
- 是否可以从本机应用程序调用 Java 代码
- 从运行C++代码调用正在运行的 Java 代码,反之亦然
- 将 java 代码转换为 c++
- 是否可以从您的C++和Java代码进行OpenGL ES调用
- 简单的 Java 代码,在创建等效C++(私有静态成员和公共访问器方法)时遇到问题
- 无法用C++编写相同的 Java 代码"cannot initialize class member here"因为错误
- 如何使用QAndroidJniObject从Qt内部调用Java代码
- 将Java代码翻译成C++
- 如何使用Java代码中使用和返回.dll对象的函数
- 当我从Java代码执行C++程序时,我应该如何测量它的执行时间