2010-11-24 16 views
6

por ejemplo, quiero hacer esto:¿Puedo nombrar una matriz con una variable en java?

String[] arraynames = new String[2]; 
arraynames[0] = "fruits"; 
arraynames[1] = "cars"; 

y ahora no saben cómo hacer esto

String[] arraynames[0] = new String[100]; // ?????? 

de manera que se crea una matriz de cadenas llamada frutos con 100 células ... Sé que esto no funciona, pero ¿hay alguna forma de hacerlo?

+0

¿Estás diciendo que quieres una matriz de matrices o simplemente una matriz llamada frutas? – johnny

+0

Quiere almacenar algunas cadenas en una matriz, y luego usar los datos de la matriz y las variables de nombre después de eso. Algo que AFAIK no puede suceder – Muggen

Respuesta

15

utilizar un ejemplo HashMap

:

HashMap<String,String[]> arraynames = new HashMap<String,String[]>(); 
arraynames.put("fruits", new String[1000]); 

// then simply access it with 
arraynames.get("fruits")[0] = "fruit 1"; 

Sin embargo, puedo sugerir que cambie matrices con ArrayList?

HashMap<String,ArrayList<String>> arraynames = new HashMap<String,ArrayList<String>>(); 
arraynames.put("fruits", new ArrayList<String>()); 

// then simply access it with 
arraynames.get("fruits").add("fruit 1"); 

** ** EDITAR

Tener un conjunto de valores float en lugar de cadenas

HashMap<String,ArrayList<Float>> arraynames = new HashMap<String,ArrayList<Float>>(); 
arraynames.put("fruits", new ArrayList<Float>()); 

// then simply access it with 
arraynames.get("fruits").add(3.1415f); 
+0

¡Iba a publicar exactamente lo mismo! –

+0

Derecho encendido. Con base en una mayor aclaración, esto parece ser lo que OP necesita (suponiendo que lo haya entendido bien). – CoolBeans

+0

¡Gracias! ¡Creo que esto funciona! ¿Pero puedo hacer esto con ArrayList de flotadores en lugar de Strings? Aparece un error de tipo inesperado ... – Johny

1

¿Está buscando una matriz doblemente indexada?

Algo así como:

String[][] arraynames = String[2][100]; 

Se han creado una serie de matrices que contienen 2 100 elementos de Cuerda cada uno en este caso.

+0

Sí, ¡pero quiero nombrar las matrices con diferentes nombres! – Johny

+1

Si ese es el caso, debe usar una ArrayList de 2 tipos diferentes de objetos Fruits. Ver la respuesta de Stacker. – CoolBeans

+0

Como @CoolBeans menciona, sí, ArrayList es probablemente lo que realmente está buscando. – aperkins

0

espero te consigo la derecha, usted podría algo como esto:

ArrayList arraynames = new ArrayList(); 

arraynames.add("fruits"); 
arraynames.add("cars"); 

arraynames.set(0, new ArrayList(100)); 
+1

OP quiere usar el sonido Arrays like. – CoolBeans

+1

@CoolBeans: aparentemente él no sabe lo que realmente quiere él mismo. –

+0

¡Intentaré esto! ¡Esto parece lo que necesito! – Johny

0

no estoy muy claro en la segunda línea de código aquí. Dijiste que intentas crear una matriz de cadenas llamada frutas. Esto debería ser suficiente si entendí esto bien.

String [] fruits = new String[100]; 
+0

Lo sé ... La cuestión es que quiero tomar los nombres de las matrices de otra matriz, y son como 100 de ellas ... – Johny

+0

No estoy seguro acerca de tomar los nombres de las matrices de otra matriz. Sin embargo, si sigues el enfoque de Yanick Rochon, puedes utilizar el nombre de la matriz como la clave en el Mapa y luego la matriz en sí es el valor en el que almacenas los datos. – CoolBeans

0

se debe utilizar una matriz bidimensional de esta manera:

String[][] myData = new String[2][100]; 

ahora myData es una matriz con 2 elementos , Ambos son conjuntos de "100 células", a continuación, puede utilizar estos 2 campos de la siguiente manera:

String[] fruits = myData[0]; 
String[] cars = myData[1]; 
fruits[0] = "peach"; 
cars[0] = "mustang"; 
0

Usando Guava biblioteca:

ListMultimap<String,String> mappedItems = ArrayListMultimap.create(); 
mappedItems.put("Fruits","Apple"); 
mappedItems.put("Fruits","Orange"); 
mappedItems.put("Fruits","Banana"); 
mappedItems.put("Cars", "BMW"); 
mappedItems.put("Cars","Ferrari"); 
System.out.println(mappedItems); 

de salida:

{Coches = [BMW, Ferrari], frutas = [manzana, naranja, plátano]}

0

Puede usar una de t El siguiente:

String[][] arraynames = String[2][100]; 
Map<String, String[]> namesMap = new HashMap<String, String[]>(); 
List<List<String>> names = new ArrayList<ArrayList<String>()>>(); 
Cuestiones relacionadas