java引用之间的xor操作

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

说长话短, 你做不到

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

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

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

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

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

最后: 不要做


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

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