Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-11-2011, 10:36   #1
FrankieB76
Member
 
Iscritto dal: Oct 2008
Messaggi: 97
[JAVA] - Matrici

buongiorno, ho un problema con una matrice, non capisco quale sia l'errore, se di sintassi o di concetto.

nel momento in cui vado a definire l'oggetto matrice, di arraylist di stringhe, ed il suo costruttore vuoto, ho questa situazione:

Codice:
public class MatriceArchi {
	
	public int dim;
	public ArrayList <String> [][] mat;
	
	//costruttore vuoto
	public MatriceArchi () {
		
		dim = 0;
		mat = new ArrayList <String> [][];
		
	}

}
mi segna errore sull'ultima riga,

Codice:
mat = new ArrayList <String> [][];
ovvero mi dice "Cannot create a generic array of ArrayList<String>",

ma non mi dice niente sopra, quando definisco

Codice:
public ArrayList <String> [][] mat;
in cosa sbaglio?
per chiarezza, l'obiettivo è la definizione di un oggetto matrice ( [] [] ) in cui ogni cella continene un ArrayList di stringhe.

grazie per l'attenzione, buona giornata!
FrankieB76 è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2011, 11:51   #2
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
In java non si possono creare array di generics.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2011, 12:01   #3
FrankieB76
Member
 
Iscritto dal: Oct 2008
Messaggi: 97
cioè, in parole povere, non posso mettere in un array quello che voglio?
e quale potrebbe essere l'alternativa per quello che devo fare?
FrankieB76 è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2011, 12:42   #4
Don[ITA]
Senior Member
 
L'Avatar di Don[ITA]
 
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
In verità si possono creare:
Codice:
public static <T extends Object> T[][] emptyMatrix(Class<? extends Object> of, int row, int col) {
    T[][] matrix = (T[][]) java.lang.reflect.Array.newInstance(of, row, col);     
    for (int i = 0; i < row; i++)
        for (int j = 0; j < col; j++) 
            try { matrix[i][j] = (T)of.newInstance(); }
            catch (InstantiationException ex) { System.err.println(ex); }
            catch (IllegalAccessException ex) { System.err.println(ex); }
    return matrix;
}
Codice:
int W = 10, H = 10;
ArrayList<String>[][] data = emptyMatrix(ArrayList.class, W, H);
__________________
iMac 27" 5K
Don[ITA] è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2011, 12:56   #5
FrankieB76
Member
 
Iscritto dal: Oct 2008
Messaggi: 97
Quote:
Originariamente inviato da Don[ITA] Guarda i messaggi
In verità si possono creare:
Codice:
public static <T extends Object> T[][] emptyMatrix(Class<? extends Object> of, int row, int col) {
    T[][] matrix = (T[][]) java.lang.reflect.Array.newInstance(of, row, col);     
    for (int i = 0; i < row; i++)
        for (int j = 0; j < col; j++) 
            try { matrix[i][j] = (T)of.newInstance(); }
            catch (InstantiationException ex) { System.err.println(ex); }
            catch (IllegalAccessException ex) { System.err.println(ex); }
    return matrix;
}
Codice:
int W = 10, H = 10;
ArrayList<String>[][] data = emptyMatrix(ArrayList.class, W, H);
ehm... ti ringrazio della risposta, devo solo un attimo capire riga per riga di cosa si tratta esattamente e come posso utilizzarla per i miei scopi.

se non ho capito male, nel doppio ciclo di for me la sta inizializzando?
FrankieB76 è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2011, 13:42   #6
Don[ITA]
Senior Member
 
L'Avatar di Don[ITA]
 
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
Esatto, nel doppio ciclo for inizializza la matrice. Ovviamente nulla ti vieta di farlo al di fuori di quel metodo:
Codice:
int W = 10, H = 10;
ArrayList<String>[][] data = (ArrayList[][]) java.lang.reflect.Array.newInstance(ArrayList.class, W, H);
for(int x = 0; x < W; x++)
    for(int y = 0; y < H; y++)
        data[x][y] = new ArrayList<String>();   //ArrayList va creato proma di poter essere usato
data[0][2].add("cane");
data[0][2].add("gatto");
data[5][3].add("casa");
data[5][3].add("ufficio");
System.out.println(data[0][2]); //stampa [cane, gatto]
System.out.println(data[5][3]); //stampa [casa, ufficio]
__________________
iMac 27" 5K
Don[ITA] è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2011, 14:26   #7
FrankieB76
Member
 
Iscritto dal: Oct 2008
Messaggi: 97
ok, grazie mille, sembrerebbe perfetto per quello che ci devo fare!
FrankieB76 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
iPhone 18 Pro e Pro Max, svelata la capa...
Dreame L50 Ultra AE a 499€ (invece di 59...
Problemi di gioventù per i Pixel 11: Goo...
Le app di dating potrebbero aver stufato...
Il successo di iPhone Duo rappresentereb...
Cartello sull'IA? L'accusa durissima con...
L'IA sempre più protagonista nei videogi...
Revolut ha consegnato passaporti e selfi...
Office 2021, 3 anni di aggiornamenti di ...
Dopo 23 anni di silenzio, Warcraft 3 spi...
Roblox sfida l'ecosistema gaming: app st...
OpenAI accusata di plagio dai migliori m...
Altro attacco hacker dell'IA: gli agenti...
Stiamo davvero perdendo il controllo del...
Microsoft perde un pilastro: Frank Shaw ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:16.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v