¿Cuál es la sobrecarga de usar java.util.List para una sola lista de elementos?

Posibilidades (en orden de huella de memoria creciente):

Map<String, String> map = new HashMap<>(); // Concatenated string values
List<String> get(String key) {
    return Arrays.asList(map.getOrDefault(key, "").split("\f"));
}

Map<String, String[]> map = new HashMap<>();
private static final String[] EMPTY = new String[0];
List<String> get(String key) {
    return Arrays.asList(map.getOrDefault(key, EMPTY));
}

Map<String, List<String>> map = new HashMap<>(); // LinkedList
List<String> get(String key) {
    return map.get(key);
}

(Solo muestra el código. No manejé bien las cadenas vacías).

Como han dicho otros, mida el espacio y la velocidad . Considere también Set<String>como una estructura de datos más óptima en lugar de List. Considera Collections.singletonList("...")y emptyList().

Si las cadenas son en su mayoría latin-1, considere que java 9 usa conjuntos de bytes más compactos (a diferencia de java 8).

Con cadenas grandes puede comprimir el byte[]uso de a GZipOutputStream.

Y la alternativa final, agotador java -Xmxy memoria física: usar una base de datos .

Respuesta 1

Estoy tratando de usar este comando: git checkout `git rev-list -n 1 --before =" 2009-07-27 13:37 "master` que estoy ejecutando a través de ProcessBuilder. Ahora, sé que el resto de mi código funciona, ya que tengo ...

Cómo renderizar Jpeg2000 (.jp2) a ImageView en Android He estado trabajando desde hace mucho tiempo, pero no pude encontrar la solución adecuada, encontré algunos nombres de imagen de imagen jp2 pero no pude ...

Hola, soy estudiante y en mi clase estamos programando un pequeño juego de serpientes, ahora el problema es que algunas veces, cuando se come una manzana, el juego se congela, descubrimos que es causada por 2 ...

He instalado OpenTest y quiero comenzar una nueva sesión. ¿Cómo hago esto? Intenté buscar esto en Google, pero solo encontré un RP que habla sobre el uso de la API.