2012-06-21 10 views
5

Tengo un HashMap<String, String>. Si quiero crear matriz de cadenas de hashmap.values(), podemos crear como¿Cómo crear una matriz de cadenas dinámica si no conocemos el número de cadenas al principio?

String[] strArray = new String[hashmap.size()] 

Pero mi problema es si los valores HashMap contienen "A, B, C", entonces tengo que añadir A y B y C a strArray.

+0

¿por qué no primero cuenta el número de elementos necesarios (atravesando una vez el hashmap), y que realmente crea la matriz y coloca los valores en ella? – Vlad

+0

Supongo que nadie te escribirá un correo electrónico, las respuestas llegarán aquí ...;) Además, ¿puedes decirnos qué intentas hacer con este conjunto? Si esto necesita cambiar dinámicamente, puede usar una de las colecciones disponibles (como 'ArrayList '). – brimborium

Respuesta

21

Usa un ArrayList.

List<String> myList = new ArrayList<String>();

No importa cuál sea el tamaño es de su HashMap se puede trabajar fácilmente con su ArrayList.

Si necesita una matriz, puede utilizar

String[] arr = myList.toArray(new String[myList.size()]); 

cuando haya terminado.

+6

+1 Si necesita una matriz, puede usar 'String [] arr = myList.toArray (new String [myList.size()])' cuando haya terminado. –

+1

@PeterLawrey edita mi respuesta y agrega este punto también, por favor. :-) –

+0

Creo que no puede entender mi pregunta. Puede ser que yo no pueda poner la pregunta en palabras de rito. De cualquier forma lo exxplain nuevamente. Por ejemplo: los valores de HashMap son –

0

¿Tiene que ser una matriz? Con Maps puede obtener la clave de conjuntos de valores.

+0

Gracias por responder John. sí, tiene que ser una matriz. Y los valores en el HashMap están separados por comas. Esos valores separados por comas se dividen por comas y se agregan a String Array por separado. –

+0

Puede imitar ArrayList establecer un tamaño inicial predeterminado y si se excede utilizar la copia de matriz en el sistema (creo) para copiar los valores a una matriz más grande. No es el más eficiente, pero parece que necesitas una matriz –

2

Puede tomar una copia de los valores cada vez que necesite una matriz.

Map<Double, String> map = ... 
String[] values = map.values().toArray(new String[map.size()]); 

Si cambia el mapa (aunque el tamaño no cambia), la matriz no va a cambiar y hay que tomar otra copia. ¿Los valores deben ser únicos?

Por lo tanto, necesito crear la cadena de matrices con valores (A, B, C, P, Q, R ..., Z).

En ese caso, parece que desea hacer lo siguiente.

Map<Double, String> map = ... 
List<String> valueList = new ArrayList<>(); 
for(String value: map.values()) 
    valueList.addAll(Arrays.asList(value.split(","))); 
String[] values = valueList.toArray(new String[valueList.size()]); 
+0

Gracias Peter ... Creo que no puedes entender mi pregunta. Puede ser que yo no sea capaz de poner la pregunta en palabras de rito, creo. De cualquier forma lo exxplain nuevamente. Para Ej: Mapa map = new HashMap (); map.put ("1", "A, B, C"); map.put ("2", "P, Q, R ..., Z"); Entonces necesito crear la matriz de cuerdas con valores (A, B, C, P, Q, R ..., Z). Tenga en cuenta que los valores separados por comas en Mapa pueden extenderse a cualquier longitud (wic es dinámico). Por favor dame las sugerencias. –

+0

¿Desea un elemento en la matriz para cada cadena entre las comas? Si es así, he agregado una solución para eso. –

+0

Sí Peter Lawrey. Quiero un elemento en la matriz para cada cadena entre las comas. Para construir String Array Necesito conocer el TAMAÑO (dinámico). No puedo encontrar el TAMAÑO. –

Cuestiones relacionadas