我想爲xor-linked list編寫java代碼。有人可以建議我如何在參考之間執行異或操作嗎?xor在java引用之間的操作
9
A
回答
15
要說長東西短,你不能。
只需多一點的話,如果Java允許您通過引用傳遞變量,這些基準運算不是由Java語言允許的。因此,你的異或操作將不可能。
而且,讀wikiedpia條目時,我已瞭解這是經典的鏈表實現的內存優化依託,以確定下一個/前一個節點,僅根據該指針運算。我認爲這是一種非常先進的內存優化,它在Java中看起來並不像在C(++)等非託管內存語言中那樣有用。
+0
在java中創建xor鏈表沒有其他選擇嗎? – Jagan 2011-01-28 09:36:06
7
你可以......但是我必須先說:不這樣做。
有一類sun.misc.Unsafe
允許做了很多不安全的事情。使用它你可以得到對象的地址,並使你的異或鏈表。但是,再次:不要做它。至少存在以下問題:
- 由於JVM不理解您的列表,所以元素被GC吃掉。
- 由於不安全是Oracle/Sun JRE的無證部分,它可能會在其他JRE中丟失,並且可能隨時消失。
- 隨着指針的擺弄是一個容易出錯的操作,由於破壞內存結構,可能會導致虛擬機崩潰或出現奇怪的結果。
最後:不要做它。
如果你只是想玩清單,在數組內實現它(使用索引而不是指針)。這是安全的,並會工作。然而,鏈表是相當低效的結構,大部分時間接近無法使用。
0
不,你不能。 Java沒有內置的用於檢索對象的地址。它仍然可以用sun.misc.Unsafe
完成,但是你應該知道你在使用這個類時正在做什麼。
相關問題
- 1. Xor Java和Flash Actionscript之間的差異
- 2. 如何做兩個六絃之間的XOR操作?
- 3. XOR操作返回
- 4. Python XOR操作和ser.read()
- 5. 如何在Crypto ++中執行XOR操作?
- 6. 如何保持操作之間的引用調用
- 7. datetimepickers之間的操作
- 8. python中浮點數之間的XOR
- 9. 索引操作Java Spring Controller
- 10. 之間操作問題
- 11. 操作之間暫停
- 12. XOR可逆性操作問題
- 13. 在Java中的時間操作
- 14. 什麼索引操作之間(的.loc)和差([])
- 15. 在操作之間傳遞列表
- 16. 在int和double之間執行操作
- 17. 在Zend中使用操作堆棧時在操作之間存在數據
- 18. ColdFusion的XOR從Java
- 19. K和int之間不兼容的操作數類型Java
- 20. Java線程和操作系統線程之間的通信
- 21. .NET和Java之間的子串操作性能比較
- 22. Java LinkedList - 檢索操作之間的差異
- 23. Java庫Args4j和Scala之間的互操作2.10
- 24. Java和Python之間的XML序列化庫互操作性
- 25. '|'之間的區別和 '+' 的位操作
- 26. 在java swing中操作時間
- 27. 操作工作流引擎Java API
- 28. Java Graphics禁用xor模式
- 29. C++中操作符之間的逗號
- 30. 圖形之間的結構操作符
爲什麼?運行時有很多列表實現 - 你需要什麼? – 2011-01-28 09:40:16
異或鏈表的目的似乎是對同一個內存。如果你想這樣做,你會使用一個ArrayList,這將節省更多的內存。 (雖然我懷疑你不需要擔心它) – 2011-01-28 09:44:27