matriz - vectores en java ejemplos
Java: matrices y vectores (4)
Desea un Mapa , que está codificado por casi cualquier cosa. El trabajo de HashMap en la mayoría de los casos.
Algo como esto.
List<String> col1Vals = new java.util.ArrayList<String>();
col1Vals.add("col_value_1");
col1Vals.add("col_value_2");
Map<String, List<String>> map = new HashMap<String, List<String>>();
map.put("col_name_1", col1Vals);
Si desea algo más simple, la biblioteca commons-lang tiene un mapa múltiple .
Estoy acostumbrado a trabajar con PHP pero últimamente he estado trabajando con Java y estoy teniendo un dolor de cabeza tratando de resolver esto. Quiero guardar esta representación en Java:
Array ( ["col_name_1"] => Array ( 1 => ["col_value_1"], 2 => ["col_value_2"], ... , n => ["col_value_n"] ), ["col_name_n"] => Array ( 1 => ["col_value_1"], 2 => ["col_value_2"], ... , n => ["col_value_n"] ) )
¿Hay una manera limpia (es decir, sin código sucio) para guardar esto en Java? Nota; Me gustaría utilizar cadenas como índices de matriz (en la primera dimensión) y no sé el tamaño definitivo de las matrices.
Intenta usar un Map<String, List<String>>
. Esto le permitirá usar cadenas como claves / índices en el mapa exterior y obtener un resultado que es una lista de cadenas como valores. Probablemente desee utilizar un HashMap
para el mapa exterior y ArrayList
para las listas internas.
Si quieres un código limpio que sea similar al PHP que diste para inicializarlo, puedes hacer algo como esto:
Map<String, List<String>> columns = new HashMap<String, List<String>>() {{
put("col_name_1", Arrays.asList("col_val_1", "col_val_2", "col_val_n"));
put("col_name_2", Arrays.asList("col_val_1", "col_val_2", "col_val_n"));
put("col_name_n", Arrays.asList("col_val_1", "col_val_2", "col_val_n"));
}};
Puede usar un Mapa y una Lista (estas dos son interfaces implementadas en más de una forma para que usted elija la más adecuada en su caso).
Para obtener más información, consulte los tutoriales de Mapa y Lista y quizás deba comenzar con el tutorial de Colecciones .
Un ejemplo:
import java.util.*;
public class Foo {
public static void main(String[] args) {
Map<String, List<String>> m = new HashMap<String, List<String>>();
List<String> l = new LinkedList<String>();
l.add("col_value_1");
l.add("col_value_2");
//and so on
m.put("col_name_1",l); //repeat for the rest of the colnames
//then, to get it you do
List<String> rl = m.get("col_name_1");
}
}
Se advirtió que el Vector es un código heredado para el marco de Colecciones. Sincroniza el acceso a sus elementos, lo que ralentiza el rendimiento. La mayoría de los casos de uso para usar List no necesitan este tipo de seguridad para hilos, y aunque lo hiciera, estaría más inclinado a usar CopyOnWriteArrayList .