Torna indietro   Hardware Upgrade Forum > Software > Programmazione

MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
Wireless 2.4 GHz, Bluetooth 5.4, cancellazione attiva del rumore, design pieghevole e un'autonomia che mette in imbarazzo prodotti che costano il doppio. Le Maestro 500 non eccellono in nulla, ma offrono tutto. E a questo prezzo è difficile chiedere di più
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
Dopo anni di attesa e una lunga fase di sviluppo, Noctua entra nel mercato dei dissipatori a liquido AIO con la nuova serie NL-LC1. Forte dell'esperienza maturata nel raffreddamento ad aria, l'azienda austriaca promette di portare la propria filosofia fatta di qualità costruttiva, attenzione ai dettagli e silenziosità anche in questo segmento. Abbiamo provato il nuovo sistema per scoprire se riesce a distinguersi in un mercato ormai molto competitivo.
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Arrivato sul mercato italiano a fine marzo, la serie Boox Go 10.3 (Gen II) offre Android 15, penna da 4096 livelli e retroilluminazione opzionale (nel modello da noi provato, Lumi, presente). La serie si compone di due tablet ePaper che fanno da e-reader, blocco note digitale e persino browser, tutto a un prezzo che fa dimenticare i prodotti di brand più blasonati
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


MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine NL-LC1 è il primo dissipatore a liquido A...
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con ...
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming Gigabyte MO32U24 OLED: il 4K a 240Hz su un panne...
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh Recensione realme 16 5G: lo smartphone con Selfi...
iPhone 17 escluso dalle funzioni AI più ...
Rokarolla, il trojan Android che ruba cr...
Qwen-Robot Suite: la strategia di Alibab...
Threads raggiunge 500 milioni di utenti ...
Un chip nel cervello gli restituisce la ...
NVIDIA svela la tecnologia che trasforma...
iPhone del 20° anniversario e AirPods co...
Non solo Prime: ecco le 13 offerte su Am...
Xreal Aura apre le prenotazioni: gli occ...
Snap presenta i nuovi Specs: gli occhial...
Google rilascia Wear OS 7: basato su And...
Microsoft chiude la porta ai Surface da ...
Sedie gaming e da ufficio in offerta: a ...
Viltrox porta il suo 28mm f/4.5 pancake ...
Jensen Huang è andato a zappare l...
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: 13:18.


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