Pregunta es cuánto cuesta crear una lista de arreglos de una colección HashMap.values ()? O creando los valores Colección solo? Asumiendo Map.size()> 100k. Los objetos también se pueden mantener en ArrayList (en lugar de HashMap) todo el tiempo, lo que tiene implicaciones en otras partes (modificaciones de los elementos, fácil por clave). ArrayList se usa para iterar sobre cada n-ésimo elemento. (Es por eso que la colección de valores no se puede usar directamente). No se realizan modificaciones durante la iteración.Rendimiento: Creación de una lista de arreglos de HashMap.values ()
Respuesta
Puede usar un Iterator
para omitir elementos: simplemente llame al next()
muchas veces.
Crear una lista de cualquier colección tiene una complejidad lineal.
tiene sentido. Entonces uso iterator y llamo it.next() en un ciclo for porque muchas veces es un parámetro. –
sí (15 caracteres ...) – Bozho
Puede crear su propio HashMap, que contiene la colección de valores del Arraylist directamente (no creo que HashMap lo haga de forma gratuita, la estructura de datos para él es diferente). Pero esto requiere una codificación adicional de su lado.
HashMap
almacena internamente los valores en una Colección values
. Eche un vistazo al source code de AbstractMap
, el padre de HashMap
.
So HashMap.values()
devuelve directamente un Collection
. No se realizan cómputos ni copias de datos. Es tan rápido como puede ser.
sólo obtener los valores y luego hacer un bucle for:
int n = 5; // every 5th element
Object[] values = hashMap.values().toArray();
int size = values.length;
for (int i = 0; i < size; i += n){
values[i];
// do something
)
HashMap.values()
no devuelve un ArrayList
de valores, sino una colección Values
.
Fuente:
public Collection<V> values() {
Collection<V> vs = values;
return (vs != null ? vs : (values = new Values()));
}
Values
es un AbstractCollection
. El motivo de los valores es solo hacer referencia al iterador de HashMap.
Su pregunta:
La pregunta es cuánto cuesta a crear un ArrayList de una HashMap.values () Collection?
Esa es una complejidad lineal (como se dijo Bozho) desde
ArrayList<V> valuesList = new ArrayList<V>(hashMap.values());
la ArrayList, valuesList
llama a la colección hashMap
toArray()
método que esencialmente hace un bucle for
de elemento 0..N (tamaño) en el colección.
Espero que esto ayude.
Para explicar la solución de @ Bozho, puede hacerlo.
int count = 0;
for(Value value: map.values())
if(count++ % 5 == 0)
// do something.
- 1. Modificar una lista de arreglos en Java
- 2. ¿Qué es una lista frente a una lista de arreglos?
- 3. ¿Qué está mal con una lista de arreglos?
- 4. Algoritmo de la lista de arreglos - Entrevista
- 5. Reducción de una lista de arreglos a un nuevo tamaño
- 6. ¿Cómo almaceno arreglos en una lista STL?
- 7. Encriptar y descifrar una lista de arreglos <String>
- 8. Funciones del conjunto hash y lista de arreglos
- 9. Recuperando un elemento de la lista de arreglos en Android?
- 10. Creación de una lista ordenada al azar de una lista ordenada
- 11. mysql - Creación de filas vs. columnas rendimiento
- 12. Iterar sobre HashMap.values () en JSF + Facelets
- 13. C# Permutación de una matriz de listas de arreglos?
- 14. Creación de una lista de adyacencia de un data.frame
- 15. Creación de un constructor de copia de una lista enlazada
- 16. CMAKE: Creación y creación de una lista dentro de una función: con directorio o ámbito global
- 17. Rendimiento de la lista (...). Insertar (...)
- 18. Python/Django: Creación de una lista simple de values_list()
- 19. ¿Pasar arreglos de tamaño fijo en C++?
- 20. Biblioteca de arreglos para .NET
- 21. Creación de una lista vinculada individualmente en C
- 22. Creación de una lista genérica <T> en Fa #
- 23. Creación de una lista <> Miembro con Spring Roo
- 24. Creación de un árbol con SQLite lista
- 25. Tratando con arreglos de objetos diferidos
- 26. creación de la lista en Erlang
- 27. Costo de rendimiento de creación de perfiles de una aplicación web en producción
- 28. ¿Los arreglos de JavaScript tienen un equivalente de "si en la lista" de Python?
- 29. Comparación de estrategias de arreglos regresivos
- 30. Arreglos de fusión PHP por valor
La pregunta no está clara. No entendí. – Emil
Cuando habla de "costo", ¿quiere decir, tiempo o memoria? – Ralph