¿La eficiencia del TreeMap de Java se basa en el número de claves o valores?

Dado que Java usa un árbol rojo-negro para implementar la clase TreeMap, es la eficiencia de put () y get () lg (N), donde N = número de claves distintas, o N = número de inserciones / recuperaciones que planea hacer ?

Por ejemplo, digamos que quiero usar un

TreeMap<Integer, ArrayList<String>>

para almacenar los siguientes datos:

1 millón de pares <1, "bob"> y 1 millón de pares <2, "jack"> (las cadenas se insertan en el valor de la lista correspondiente a la clave)

El mapa de árbol final tendrá 2 claves, cada una de las cuales almacenará una lista de millones de cadenas "bob" o "jack". ¿Es la eficiencia de tiempo lg (2mil) o lg (2)? Supongo que es lg (2) ya que así es como funciona un árbol rojo-negro, pero solo quería comprobarlo.

Respuesta 1

El rendimiento de un TreeMap con 2 pares se comportará como N = 2, independientemente de cuántas adiciones duplicadas se hayan realizado previamente. No hay "memoria" de las adiciones en exceso, por lo que no pueden producir ninguna sobrecarga.

Entonces sí, puede suponer informalmente que la eficiencia del tiempo es "log 2".

Aunque no tiene mucho sentido ya que la notación big-O está destinada a relacionarse con la eficiencia asintótica en lugar de ser relevante para tamaños pequeños. Un algoritmo O (N ^ 3) podría ser fácilmente más rápido que un algoritmo O (log N) para N = 2.

Respuesta: 2

Uso de Apache HttpClient 4.5.x en la aplicación web de mi cliente que se conecta (e inicia sesión) en otra aplicación web (por ejemplo, principal). La relación entre estas 2 webapps es de muchos a muchos, lo que significa para algunos usuarios '...

¿Alguien puede sugerir una solución para el siguiente escenario? Tenemos menús de restaurantes. Cada restaurante tiene su propio menú. El objetivo es identificar los elementos en el menú, como elementos del menú, ingredientes, ...

Quiero que mi código se repita, pero reinicialice la variable a 0. Cada vez que ingreso un número, lo agrego al resultado anterior, pero quiero que se restablezca. Adjunto dos imágenes a continuación. Uno es el actual ...

Me gustaría saber qué pensar cuando escribo lo que debería ser un método perfectamente bueno, pero no se reconoce como un método. Aquí está. GObject privado getCollidingObject () {gobj = ...