Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

xor operation between java references

I want to write java code for xor-linked list . Can somebody suggest me how to perform xor operation between references?

like image 633
Jagan Avatar asked Jan 28 '11 09:01

Jagan


2 Answers

To say long things short, you can't.

With just a little more words, if Java allows you to pass variables by references, arithmetic on these reference is not permitted by the Java language. Hence, your xor operations won't be possible.

Moreover, when reading the Wikipedia entry, I understand it's a memory optimization of classical linked list implementation relying, for determining next/previous node, solely upon that pointer arithmetic. I consider it a kind of very advanced memory optimization, that doesn't seem as useful in Java as it can be in unmanaged memory languages like, say, C(++).

like image 154
Riduidel Avatar answered Oct 08 '22 14:10

Riduidel


You can... but I must say first: DO NOT DO IT.

There's a class sun.misc.Unsafe allowing doing a lot of unsafe things. Using it you can get the address of objects and make you xor-linked list. But again: DO NOT DO IT. There are at least the following problems:

  • As JVM do not understand your list, the elements get eaten by the GC.
  • As Unsafe is a undocumented part of Oracle/Sun JRE, it may be missing in other JREs and it may disappear anytime.
  • As fiddling with pointers is an error-prone operation, you may crash your VM or get strange result due to destroying memory structures.

And finally: DO NOT DO IT.


If you just want to play with the list, implement it inside of an array (use indexes instead of pointers). This is safe and will work. However, linked lists are quite inefficient structures, close to unusable most of the time.

like image 41
maaartinus Avatar answered Oct 08 '22 15:10

maaartinus