Conversione arrayList in array Statico

di il
4 risposte

Conversione arrayList in array Statico

Buongiorno,
vorrei convertire il mio array bi-dimensionale di stringhe creata tramite un ArrayList in un array bi-dimensionale di stringhe statico.
Ho questo:
ArrayList<ArrayList<String>> arr = new ArrayList<ArrayList<String>> ();
come dovrei fare?

4 Risposte

  • Re: Conversione arrayList in array Statico

    
    String[][] matrice = new String[arr.size()][];
    for(int i=0; i<arr.size(); i++) {
       matrice[i] = new String[ arr.get(i).size() ];
       for(int j=0; j<arr.get(i).size(); j++) {
          matrice[i][j] = arr.get(i).get(j);
       }
    }
    

    Ovviamente si presume che non vi siano oggetti nulli nella lista iniziale (e che la lista iniziale non sia nulla), altrimenti è necessario effettuare i dovuti controlli e agire di conseguenza.

    Ciao.
  • Re: Conversione arrayList in array Statico

    mark22 ha scritto:


    vorrei convertire il mio array bi-dimensionale di stringhe creata tramite un ArrayList in un array bi-dimensionale di stringhe statico.
    Ho questo:
    ArrayList<ArrayList<String>> arr = new ArrayList<ArrayList<String>> ();
    Se da un ArrayList<ArrayList<String>> vuoi ottenere un String[][] ci sono diversi modi:

    1) crei prima il solo array principale new String[dim][] poi fai un ciclo for e sfrutti il toArray(T[] a) per ottenere ciascun array interno.

    2) usi la Stream API (Java 8+) con un map e poco altro per fare tutto in 1 sola riga di codice.

    Dipende da cosa conosci o preferisci.

    Riguardo lo "statico" che dicevi, intendi variabile "di classe"? Dove e perché?
  • Re: Conversione arrayList in array Statico

    Usando la Stream API la soluzione è questa:
    
    Stream<ArrayList<String>> s1 = arr.stream(); //stream iniziale
    Stream<String[]> s2 = s1.map(l -> l.stream().toArray(String[]::new)); //map degli ArrayList interni in array
    String[][] m = s2.toArray(String[][]:new); //riduzione ad una matrice di stringhe
    
    puoi scrivere tutto su una riga
    
    String[][] m = arr.stream().map(l -> l.stream(String[]::new)).toArray(String[][]::new);
    
  • Re: Conversione arrayList in array Statico

    andbin ha scritto:


    mark22 ha scritto:


    vorrei convertire il mio array bi-dimensionale di stringhe creata tramite un ArrayList in un array bi-dimensionale di stringhe statico.
    Ho questo:
    ArrayList<ArrayList<String>> arr = new ArrayList<ArrayList<String>> ();
    Se da un ArrayList<ArrayList<String>> vuoi ottenere un String[][] ci sono diversi modi:

    1) crei prima il solo array principale new String[dim][] poi fai un ciclo for e sfrutti il toArray(T[] a) per ottenere ciascun array interno.

    2) usi la Stream API (Java 8+) con un map e poco altro per fare tutto in 1 sola riga di codice.

    Dipende da cosa conosci o preferisci.

    Riguardo lo "statico" che dicevi, intendi variabile "di classe"? Dove e perché?
    Come funziona lo Stream API? Non lo conosco

    LeleFT ha scritto:


    
    String[][] matrice = new String[arr.size()][];
    for(int i=0; i<arr.size(); i++) {
       matrice[i] = new String[ arr.get(i).size() ];
       for(int j=0; j<arr.get(i).size(); j++) {
          matrice[i][j] = arr.get(i).get(j);
       }
    }
    

    Ovviamente si presume che non vi siano oggetti nulli nella lista iniziale (e che la lista iniziale non sia nulla), altrimenti è necessario effettuare i dovuti controlli e agire di conseguenza.

    Ciao.
    Perfetto grazie mille!!
Devi accedere o registrarti per scrivere nel forum
4 risposte