java – 使用包装类而不是静态变量
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 使用包装类而不是静态变量,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1901字,纯文字阅读大概需要3分钟。
内容图文
这是我在StackOverFlow上的第一个问题:
我正在学习采访“Cracking the code interview”(第5版)的书,
我正在解决下一个问题:
Implement a function to check if a binary tree is a binary search tree (Q 4.5 pg 86).
在继续之前,我想提醒您二进制搜索树与简单二叉树之间的区别:
A Binary search tree imposes the condition that for all nodes, the left children are less than or equal to the current node, which is less than all the right nodes.
因此,本书提供的解决方案之一是使用按顺序遍历扫描树,并在运行中检查我们访问的每个节点是否大于最后一个节点,并假设树不能具有重复值:
public static int last_printed = Integer.MIN_VALUE;
public static boolean checkBST(TreeNode n) {
if(n == null) return true;
// Check / recurse left
if (!checkBST(n.left)) return false;
// Check current
if (n.data <= last_printed) return false;
last_printed = n.data;
// Check / recurse right
if (!checkBST(n.right)) return false;
return true; // All good!
}
现在,在这里一切都很好,但随后这本书引用:
If you don’t like the use of static variables, then you can tweak this code to use a wrapper class for the integer, as shown below:
Class WrapInt {
public int value;
}
在这里和其他网站上阅读包装类后,我无法得出结论,为什么以及如何在这里使用包装类而不是静态变量?
解决方法:
这是一种机制,您可以通过它创建WrapInt的实例并传递它.然后,您只将值公开给应该知道它的代码,而不是可以从任何地方访问和更改的公共静态非final变量.
你有包装类的原因是因为Java原语是按值传递的;传递一个int然后更新它不会通过系统的其余部分传播更改.
这看起来像这样:
public static boolean checkBST(TreeNode n) {
WrapInt counter = new WrapInt();
return checkBST(n, counter);
}
public static boolean checkBST(TreeNode n, WrapInt counter) {
if(n == null) return true;
// Check / recurse left
if (!checkBST(n.left, counter)) return false;
// Check current
if (n.data <= counter.value) return false;
counter.value = n.data;
// Check / recurse right
if (!checkBST(n.right, counter)) return false;
return true; // All good!
}
内容总结
以上是互联网集市为您收集整理的java – 使用包装类而不是静态变量全部内容,希望文章能够帮你解决java – 使用包装类而不是静态变量所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。