java引用之间的xor操作

时间:2011-01-28 09:28:50

标签: java reference xor xor-linkedlist

我想为xor-linked list编写java代码。有人可以建议我如何在引用之间执行xor操作吗?

4 个答案:

答案 0 :(得分:15)

说长话短,你不能

只需更多的单词,如果Java允许您通过引用传递变量,Java语言就不允许对这些引用进行算术运算。因此,您的xor操作将无法实现。

此外,在阅读wikiedpia条目时,我认为它是经典链表实现依赖的内存优化,用于确定下一个/上一个节点,仅依赖于指针算术。我认为它是一种非常先进的内存优化方法,它在Java中似乎不像在非托管内存语言中那样有用,例如C(++)。

答案 1 :(得分:8)

你可以......但我必须先说:不要做

有一个班级sun.misc.Unsafe允许做很多不安全的事情。使用它,您可以获取对象的地址,并使您链接到xor链接列表。但是又一次:不要做它。至少存在以下问题:

  • 由于JVM无法理解您的列表,因此GC会使用这些元素。
  • 由于Unsafe是Oracle / Sun JRE的未记录部分,因此可能在其他JRE中丢失,并且它可能随时消失。
  • 由于摆弄指针是一个容易出错的操作,您可能会因为破坏内存结构而导致VM崩溃或获得奇怪的结果。

最后:不要做


如果您只想使用列表,请在数组中实现它(使用索引而不是指针)。这是安全的并且会起作用。但是,链表是非常低效的结构,大部分时间都接近无法使用。

答案 2 :(得分:0)

不,你不能。 Java没有用于检索对象地址的内置函数。它仍然可以使用viewWillLayoutSubviews完成,但您应该知道在使用该类时您正在做什么。

答案 3 :(得分:0)

在 Java 中无法在引用节点之间执行 XOR 操作。 XOR 是按位逻辑运算符。它只能用于对二进制数字/布尔值执行操作,我们不能将 java 中的内存地址转换为整数