Quiero escribir el código java para xor-linked list. ¿Puede alguien sugerirme cómo realizar la operación xor entre referencias?operación xor entre referencias java
Respuesta
Para decir cosas largas cortas, no se puede.
Con solo un poco más de palabras, si Java le permite pasar variables por referencias, el lenguaje Java no permite la aritmética en estas referencias. Por lo tanto, sus operaciones xor no serán posibles.
Por otra parte, al leer la entrada wikiedpia, entiendo que es una optimización de la memoria de la implementación de la lista vinculada clásica, para determinar el nodo siguiente/anterior, únicamente sobre esa aritmética de puntero. Considero que es una especie de optimización de memoria muy avanzada, que no parece ser tan útil en Java como lo puede ser en lenguajes de memoria no administrados como, por ejemplo, C (++).
¿No hay otra alternativa para crear una lista xor-linked en java? – Jagan
Sí. Use una lista regular doblemente vinculada; p.ej. según lo provisto por 'LinkedList'. –
Puede ... pero debo decir primero: NO HAGALO.
Hay una clase sun.misc.Unsafe
que permite hacer muchas cosas inseguras. Utilizándolo, puede obtener la dirección de los objetos y hacer una lista xor-linked. Pero nuevamente: NO LO HAGA. Existen al menos los siguientes problemas:
- Como JVM no entiende su lista, los elementos son comidos por el GC.
- Como Unsafe es una parte no documentada de Oracle/Sun JRE, puede faltar en otros JRE y puede desaparecer en cualquier momento.
- Como tocar el violín con los punteros es una operación propensa a errores, puede bloquear su VM u obtener resultados extraños debido a la destrucción de las estructuras de la memoria.
Y finalmente: DO NOT DO IT.
Si lo que desea es jugar con la lista, poner en práctica dentro de una matriz (índices de uso en lugar de punteros). Esto es seguro y funcionará. Sin embargo, las listas vinculadas son estructuras bastante ineficientes, casi inutilizables la mayor parte del tiempo.
Wow ... +1 Por la mención de 'Inseguro'. Me gustaría duplicarlo fácilmente (si fuera posible) con un ejemplo de código. – Riduidel
No, no puedes. Java no tiene un built-in para recuperar las direcciones de los objetos. Todavía se puede hacer con sun.misc.Unsafe
, pero debe saber lo que está haciendo cuando usa esa clase.
- 1. cómo hacer la operación XOR entre dos cadenas hexadecimales?
- 2. operación XOR de dos booleana campo
- 3. Red neuronal XOR en Java
- 4. ¿Diferencia (XOR) entre dos rectángulos, como rectángulos?
- 5. Referencias circulares en Java
- 6. ¿Cuál es la diferencia entre XOR y NOT-EQUAL-TO?
- 7. Java IO Performance XOR con 2 archivos
- 8. Gráficos de Java deshabilitar el modo xor
- 9. ¿Cuál es la diferencia entre referencias y objetos en Java?
- 10. Referencias legales a Java Java
- 11. operación BitMask en Java
- 12. Cerrar operación Java
- 13. Comparando referencias en Java
- 14. Operación entre hilos no válida
- 15. ¿Cómo implementa XOR usando + - * /?
- 16. La operación de asignación de Javascript es copiar referencias?
- 17. Java comportamiento operación de multiplicación
- 18. Java: pila con referencias débiles
- 19. Por qué el intercambio no utiliza la operación Xor en C++
- 20. ¿Hay una función Ruby para realizar una operación XOR en dos conjuntos de cadenas?
- 21. BackgroundWorker - Operación entre hilos no válida
- 22. C++ de referencias entre un puntero a
- 23. Diferencia entre boost :: ref y referencias regulares
- 24. diferencia entre las referencias y punteros
- 25. Objetivo XOR-c
- 26. BitArray y XOR
- 27. XOR de tres valores
- 28. XOR registro, registro (ensamblador)
- 29. EXCEL XOR múltiples bits
- 30. java BigDecimal arithmaticException operación no válida
¿Por qué? El tiempo de ejecución tiene muchas implementaciones de listas: ¿qué es lo que necesita? –
El propósito de XOR-linked-list parece ser la misma memoria. Si quisiera hacer eso, usaría una ArrayList que ahorraría aún más memoria. (Aunque dudo que deba preocuparse por eso) –