2010-04-26 15 views
12

Digamos que necesitaba crear una serie de objetos String [].¿Cómo se nombran dinámicamente los objetos en Java?

Yo sé que si yo quería hacer una matriz de cadenas llamada "prueba" para sostener 3 cadenas que podía hacer

String [] = prueba de nuevo String [3];

Pero digamos que necesitaba hacer una serie de estas matrices y quería que fueran nombradas, 1,2, 3, 4, 5 ... etc. Para las que necesitaba y no sabía cómo muchos que necesitaría.

¿Cómo lograr un efecto similar a esto:

for (int k=0; k=5; k++){ 
String[] k = new String[3]; 
} 

cual sería creado 5 matrices de cadenas denominadas 1 a 5. Básicamente quiero ser capaz de crear objetos de matriz con un nombre determinado mediante alguna otra función . ¿Por qué no puedo hacer esto? ¿Solo estoy siendo estúpido?

+0

¿Cuáles son los casos de uso en los que está pensando para este comportamiento? Quizás sabiendo que podemos ayudarlo a descubrir una forma Java de hacer lo que quiera, sin variables dinámicamente nombradas. – Phil

Respuesta

17

No hay "variables variables" (es decir, variables con nombres de variables) en Java, pero puede crear Mapas o Arrays para tratar su problema en particular. Cuando se encuentra con un problema que le hace pensar "Necesito que mis variables cambien los nombres dinámicamente", debe probar y pensar "matriz asociativa". En Java, obtiene matrices asociativas usando Map s.

Es decir, se puede mantener una lista de sus matrices, algo así como:

List<String[]> kList = new ArrayList<String[]>(); 
for(int k = 0; k < 5; k++){ 
    kList.add(new String[3]); 
} 

O tal vez un poco más cerca de lo que está buscando, puede utilizar un mapa:

Map<Integer,String[]> kMap = new HashMap<Integer,String[]>(); 
for(int k = 0; k < 5; k++){ 
    kMap.put(k, new String[3]); 
} 
// access using kMap.get(0) etc.. 
3

Lo más cerca que se pondrá en Java es:

Map<String, String[]> map = new HashMap<String, String[]>(); 

for (int k=0; k=5; k++){ 
    map.put(Integer.toString(k), new String[3]); 
} 

// now map.get("3") will get the string array named "3". 

Tenga en cuenta que "3" no es una variable, pero en con unión con el objeto map funciona como uno ... más o menos.

2

Lo que quiere hacer es llamar metaprogramación - programación de un programa, que Java no admite (permite los metadatos solo a través de anotaciones). Sin embargo, para un caso de uso tan fácil, puede crear un método que tomará una int y devolverá la matriz de cadenas que desea, p. al acceder a la matriz de matrices. Si quería una convención de nomenclatura más compleja, considere el enunciado swtich para algunos valores y el mapa para más valores. Para un número fijo de valores con nombres personalizados, defina un Enum, que se puede pasar como un argumento.

7

Otros ya han proporcionado excelentes respuestas, pero para cubrir todas las bases, Java tiene una matriz de matrices.

String[][] k = new String[5][3]; 
k[2][1] = "Hi!"; 

Ahora usted no tiene 5 variables llamado k1, k2, k3, k4, k5, siendo cada una String[3] ...

... pero tiene una serie de String[], k[0] , k[1], k[2], k[3], k[4], cada uno siendo String[3].

Cuestiones relacionadas