¿Se puede implementar un mapa usando Tree? ¿Se puede implementar un mapa usando List? Esto es específico de Java, pero me gustaría conocer el enfoque general.

Bienvenido a la parte algo confusa del uso de Java.

Hay dos tipos de mapas, SortedMap y Map (en realidad hay más, pero estoy simplificando). Todos los mapas son construcciones de pares de valores clave donde una determinada clave devuelve un cierto valor. Esa parte debería ser familiar, pero en un SortedMap las claves se ordenan de acuerdo con los objetos Key .compareTo, que puede sobrecargar e implementar usted mismo si así lo desea. Ninguno de los mapas admite claves nulas, y las claves duplicadas dan como resultado un golpeteo.

TreeMap es la implementación predeterminada de SortedMap; todas las claves se mantienen en un árbol, para que pueda obtener secciones o subsecciones de claves o valores (o ambos) más fácilmente.

HashMap es la implementación predeterminada de Map, y sus claves nunca se ordenan, pero su funcionalidad de agregar y obtener es más rápida a altas cargas que TreeMap, porque con TreeMap su clasificación al insertar y recorrer el árbol al obtener. HashMap simplemente ajusta la clave y salta al índice correcto.

Para implementar esta estructura de datos usted mismo, simplemente construya un árbol equilibrado del tipo que más le convenga, luego use los nodos de ese árbol para almacenar sus claves y valores, y reequilibre los nodos del árbol de acuerdo con la función .compareTo de la clave cuando agrega o elimina nodos.

Esta es una respuesta bastante básica, si tiene una pregunta muy complicada, con gusto la responderé.

Definitivamente, podría usar un árbol (o incluso una lista) para implementar un mapa clave-valor. De hecho, los valores predeterminados de Java incluyen un mapa ordenado implementado como un árbol, en lugar del mapa desordenado (implementado como una tabla hash). Por lo general, ese es el punto de definición al elegir entre un hash / árbol: ¿deben ordenarse las claves o no es necesario?

Una lista probablemente no sea una buena idea: la velocidad se ve comprometida en comparación con el uso de un árbol o una estructura hash. Aunque ha habido algunas implementaciones de similar. En particular, las listas de asociación utilizadas en algunas formas antiguas de Lisp.

More Interesting

Ahora he leído sobre algoritmos y estructuras de datos como Al Klein me dijo. ¿Qué lenguaje de programación debo aprender?

¿Qué es el algoritmo de transformación de Burrows-Wheeler y cómo se usa en aplicaciones del mundo real?

¿Cómo aprenden los algoritmos de aprendizaje de refuerzo del juego de ajedrez a jugar bien, dado que cada movimiento no está etiquetado como bueno o malo, a diferencia del aprendizaje supervisado donde cada dato está etiquetado como bueno o malo?

Inventé un algoritmo de búsqueda de cadenas. ¿Cómo hago para asegurarme de que lleva mi nombre? ¿Es posible patentarlo / copyright o alguna otra cosa? ¿Se pueden proteger los algoritmos?

¿Qué imprime este código? ¿Cuál es la función de EOLN en este ejemplo?

¿Cuáles son algunos proyectos desafiantes en algoritmo genético para principiantes?

Para una computadora, ¿qué tan aleatorio es ser aleatorio?

¿Cómo entender el algoritmo SHA-1? ¿Cuáles son los mejores ejemplos para ello?

¿Cuál es la complejidad temporal de resolver de manera recursiva el problema del salto de palabra?

¿Cómo recomienda Foursquare las sugerencias de mis amigos de Facebook?

Cómo implementar este algoritmo usando Matlab

¿Cuándo deberíamos considerar el uso de algoritmos recursivos al escribir un programa? Discuta en términos de ventajas y desventajas.

¿La evolución biológica es algorítmica?

¿Cuál es la diferencia entre un algoritmo genético y un algoritmo de escalador?

¿Existe un formato estandarizado para representar las funciones de la computadora como algoritmos matemáticos?