2012-05-26 22 views

Respuesta

21

se puede ir con

List<List<String>> ls2d = new ArrayList<List<String>>(); 
List<String> x = new ArrayList<String>(); 
x.add("Hello"); 
x.add("world!"); 
ls2d.add(x); 

System.out.println(Arrays.deepToString(ls2d.toArray())); 
+0

cómo imprimimos la Lista 'ls2d' como tornillo de banco de índice. Lo que quiero decir es que imprime el primer elemento de la lista 'ls2d' y luego el elemento 2 y así sucesivamente –

+0

@KasunSiyambalapitiya usa un ciclo como' for' o 'while'. Por ejemplo: 'for (List inner: ls2d) {System.out.println (Arrays.toString (ls2d.toArray())); } ' –

+0

¿Cómo se accede a un elemento en las filas? –

12

La primera lista de matriz no es una lista de matriz de String, es una ArrayList de ArrayList.

ArrayList<ArrayList<String>> 
+2

Mierda, debería haber publicado una respuesta en lugar de un comentario: p – keyser

+0

¿Cómo agrego a la segunda lista? – code511788465541441

+0

user521190, la primera lista de matriz no es una lista de matriz de String, es una lista de arrays de arraylist. –

3
List<List<String>> array = new ArrayList<List<String>>(); 
... 
array.add(new ArrayList<String>()) 
array.get(0).add("qqq"); 

array.get (0) - es una lista interna

3
List<List<String>> super2dArray = new ArrayList<ArrayList<String>>() 

Este es un ArrayList de ArrayLists que sostienen las cuerdas.

También ArrayList<String<String>> mylist no tiene sentido, porque String no es una colección/lista, pero creo que lo has entendido. Los futuros lectores pueden no obstante.

Consulte this answer para ver por qué elegí tener List en el lado izquierdo.

0

Prueba esto:

public class JavaTests { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 

    String[ ][ ] test2 = new String[3][3];  //3 can be replace if you add more test2[?][?] = "RandomString" 

     test2[0][0] = "String1"; 
     test2[0][1] = "String2"; 
     test2[0][2] = "String3"; 

     test2[1][0] = "String4"; 
     test2[1][1] = "String5"; 
     test2[1][2] = "String6"; 

     test2[2][0] = "String7"; 
     test2[2][1] = "String8"; 
     test2[2][2] = "String9"; 

     for (int i = 0; i <= 2; i++){ 
      for (int j = 0; j <= 2; j++){ 
       System.out.print(test2[i][j] +"\t"); 
      } 
      System.out.println("\n"); 
     } 
     System.out.println("\n");  
    } 
} 
0

Hay dos maneras de lograr lo que desea. Estoy proporcionando fragmento de código para ambos:

1. List<List<String>> lol = new ArrayList<List<String>>();

Scanner in = new Scanner(System.in); 
int size = in.nextInt(); 

//Declare your two dimensional ArrayList of Strings. 
List< List<String>> lol = new ArrayList<List<String>>(); 

//Instantiate and Populate 
for (int i=0;i<size;i++){ 
    int internalListSize = in.nextInt(); //the size of each internal list 
    lol.add(new ArrayList<String>()); 
    for (int j=0;j<internalListSize;j++){ 
     String whateverYouWanttoPut = in.nextLine(); 
     lol.get(i).add(whateverYouWanttoPut); 
    } 
} 

//Access Elements 
try { 
    System.out.println(lol.get(0).get(4)); 
    System.out.println(lol.get(1).get(2)); 
    System.out.println(lol.get(3).get(2)); 
} catch (Exception e){ 
    System.out.println("ERROR!"); 
}  

2. ArrayList[] set = new ArrayList[n];

Scanner in = new Scanner(System.in); 
int size = in.nextInt(); 
//Declare your two dimensional ArrayList of Strings. 
ArrayList[] set = new ArrayList[size]; 

//Populate it. 
for(int i=0;i<size;i++){ 
    int innerSize = in.nextInt(); 
    set[i] = new ArrayList<String>(); 
    for(int j=0;j<innerSize;j++){ 
     set[i].add(in.nextLine());     
    } 
}   
try{ 
    System.out.println(set[0].get(1)); 
    System.out.println(set[1].get(2)); 
} catch(Exception e){ 
    System.out.println("ERROR!"); 
} 
Cuestiones relacionadas