java引用之间的xor操作

Jag*_*gan 9 java reference xor xor-linkedlist

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

Rid*_*del 15

说长话短,你做不到.

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

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

  • 是.使用常规的双向链表; 例如由`LinkedList`提供. (4认同)

maa*_*nus 8

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

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

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

最后:不要做.


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

  • 哇... +1提到'不安全'.我会用代码示例轻松地将它加倍(如果可能的话). (2认同)