Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
L'abbonamento Ultimate di GeForce NOW ora comprende la nuova architettura Blackwell RTX con GPU RTX 5080 che garantisce prestazioni tre volte superiori alla precedente generazione. Non si tratta solo di velocità, ma di un'esperienza di gioco migliorata con nuove tecnologie di streaming e un catalogo giochi raddoppiato grazie alla funzione Install-to-Play
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Deebot X11 Omnicyclone implementa tutte le ultime tecnologie Ecovacs per l'aspirazione dei pavimenti di casa e il loro lavaggio, con una novità: nella base di ricarica non c'è più il sacchetto di raccolta dello sporco, sostituito da un aspirapolvere ciclonico che accumula tutto in un contenitore rigido
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Grazie ad un mocio rotante che viene costantemente bagnato e pulito, Narwal Flow assicura un completo e capillare lavaggio dei pavimenti di casa. La logica di intellignza artificiale integrata guida nella pulizia tra i diversi locali, sfruttando un motore di aspirazione molto potente e un sistema basculante per la spazzola molto efficace sui tappeti di casa
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 12-07-2011, 17:56   #1
FrankieB76
Member
 
Iscritto dal: Oct 2008
Messaggi: 97
JAVA - Matrici con Arraylist

Salve a tutti, innanzi tutto!

scusate, ho un problema di programmazione con Java.

mi servirebbe dichiarare una matrice di ArrayList di ArrayList.... è possibile una cosa di questo tipo? mi servirebbe solo impostarla... il fatto è che la matrice iniziale so di quante righe e colonne deve essere, mentre quello che contiene ogni locazione della matrice è roba piuttosto variabile, ovvero un certo numero di vettori, ognuno di un certo numero di interi...

qualcuno avrebbe suggerimenti da darmi? grazie mille in anticipo!

Ultima modifica di FrankieB76 : 12-07-2011 alle 18:02. Motivo: saluto
FrankieB76 è offline   Rispondi citando il messaggio o parte di esso
Old 12-07-2011, 20:07   #2
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Codice:
import java.util.*;

public class Prova {

	public static void main(String[] args) {
	
		ArrayList<ArrayList> matrix = new ArrayList<ArrayList>();
		ArrayList<Integer> firstRow = new ArrayList<Integer>();
		firstRow.add(0, 12);
		firstRow.add(1, 15);
		firstRow.add(2, -2);
		matrix.add(0, firstRow);
		ArrayList<Integer> secondRow = new ArrayList<Integer>();
		secondRow.add(0, 112);
		secondRow.add(1, 56);
		secondRow.add(2, 24);
		secondRow.add(3, 1);
		matrix.add(1, secondRow);
		ArrayList<Integer> thirdRow = new ArrayList<Integer>();
		thirdRow.add(0, 23);
		thirdRow.add(1, 2455);
		matrix.add(2, thirdRow);
		
		for(int i = 0; i < matrix.size(); i++) {
			ArrayList<Integer> row = matrix.get(i);
			for(int j = 0; j < row.size(); j++)
				System.out.print(row.get(j) + " ");
			System.out.println();
		}
	}

}
Codice:
12 15 -2 
112 56 24 1 
23 2455
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 12-07-2011, 20:31   #3
FrankieB76
Member
 
Iscritto dal: Oct 2008
Messaggi: 97
wow! grazie mille Ndakota!!! anche per la rapidità!
la struttura va benissimo, adesso faccio un po' di tentativi per gli inserimenti dei dati da tastiera o in lettura da file! se dovessi avere altri problemi, magari torno a chiedere consiglio!!

grazie ancora, buona serata!
Francesco
FrankieB76 è offline   Rispondi citando il messaggio o parte di esso
Old 12-07-2011, 23:04   #4
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Probabilmente il tuo thread verrà chiuso perchè non hai rispettato la convenzione circa l'argomento del thread. Nel caso aprine un altro o scrivimi pure in privato. Ciao
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2011, 00:51   #5
FrankieB76
Member
 
Iscritto dal: Oct 2008
Messaggi: 97
non ho capito... che danni ho fatto?
FrankieB76 è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2011, 08:00   #6
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Niente di che eh http://www.hwupgrade.it/forum/showthread.php?t=1649196
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2011, 15:45   #7
FrankieB76
Member
 
Iscritto dal: Oct 2008
Messaggi: 97
speriamo che resti ancora un po'....
vorrei chiedere una cosa, se ho questo codice:


Codice:

	public ArrayList prendidati(){
		
		//dichiaro un nuovo ArrayList
		ArrayList lista = new ArrayList();
		
		// Inizalizzo il reader di opencsv
		CSVReader reader = null;
		
		try {
			//leggo il file arraylist.csv con il separatore ';'
			reader = new CSVReader(new FileReader("arraylist.csv"), ';');
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		String [] nextLine;
		//int j = 0;
		
		
		try {
			while ((nextLine = reader.readNext()) != null) {
				for(int i = 0; i < nextLine.length; i++) 
					lista.add (Double.valueOf(nextLine[i]).doubleValue());
							}
		}	catch (IOException e) {
			
			e.printStackTrace();
		}
		//prova per vedere se memorizza qualcosa (da cancellare alla fine)
		System.out.println ();
		for(int i = 0; i < lista.size(); i++) {
			System.out.print (lista.get(i) + " ");
		}
		System.out.println ();
		// System.out.println ("la lista è: " + lista);
		return lista;
				
	} // fine metodo prendidati
(sperando di aver azzeccato il thread per il codice... )

mi legge ed inserisce nell'Arraylist "lista" tutti i dati presenti nel file csv, composto di svariate righe a lunghezza variabile. come faccio invece a farlo fermare alla prima riga? ovviamente il risultato finale dovrà essere che riesco ad inserire ogni riga del mio .csv in un ArrayList di ArrayList, ma questa me la vedo io dopo...

che suggerimento mi potresti dare? grazie sempre in anticipo!

Ultima modifica di FrankieB76 : 13-07-2011 alle 16:01. Motivo: indentamento codice
FrankieB76 è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2011, 20:19   #8
Mixmar
Senior Member
 
L'Avatar di Mixmar
 
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
Usa un BufferedReaderal posto di FileReader per leggere il contenuto del file, e poi passa il contenuto letto successivamente al CSVReader: in questo modo ti potrai fermare dopo aver letto la prima riga.
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur
Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N
Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN
Mixmar è offline   Rispondi citando il messaggio o parte di esso
Old 14-07-2011, 10:50   #9
FrankieB76
Member
 
Iscritto dal: Oct 2008
Messaggi: 97
ok, mi studio il funzionamento e ci provo!

grazie!
FrankieB76 è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2011, 18:00   #10
FrankieB76
Member
 
Iscritto dal: Oct 2008
Messaggi: 97
salve a tutti.

continuo ad occuparmi di array e ArrayList...
ho un problema: nel momento in cui ho dei piccoli array, all'interno di un ciclo for, quindi sotto l'indice "i", nel momento in cui devo inserirle singolarmente in un Arraylist, nella i-esima posizione, come faccio?

spiego meglio, ho provato facendo:

lista.add(Integer.parseInt(str_list[i]));

str_list[i] è l'elemento dell'array dichiarato come:

String[] str_list = line.trim().split("\\s") -- (sto leggendo la riga di un file)

mentre lista è l'ArrayList, dichiarato come:

ArrayList lista = new ArrayList();

e dovrebbe essere un ArrayList di elementi che sono (vorrei che fossero...) ognuno degli array. e già mi viene il dubbio che abbia sbagliato la dichiarazione di lista.

dicevo, il problema di fare così, con la ".add", è che aggiunge nell'ArrayList ogni volta l'array a quello precedente, così in parole povere, invece di aggiungere 3 array al mio ArrayList di array, ottengo un Arraylist con dentro i tutti i singoli elementi dei 3 array, uno di fila all'altro.

mi sono spiegato bene?

non mi fa usare la lista.get(i), perche posso usarla come elemento a destra di una assegnazione con a sinistra una variabile, ma non come elemento a sinistra, che appunto deve essere una variabile...

come posso fare per ottenere un mio ArrayList di 3 elementi di tipo array (di interi, tradotti con il parseInt dalle stringhe lette dal file) ????

grazie mille in anticipo a chiunque voglia rispondere!
FrankieB76 è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2011, 22:10   #11
FrankieB76
Member
 
Iscritto dal: Oct 2008
Messaggi: 97
hmmm... nessuno ha un suggerimento?
FrankieB76 è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2011, 23:38   #12
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2774
Se la lista che vuoi dichiarare deve essere una lista di liste di stringhe, usando ArrayList puoi dichiararla così:
Codice:
ArrayList<ArrayList<String>> list = new ArrayList<ArrayList<String>>();
Per inserire un elemento nella lista di indice i ne ottieni prima il riferimento e poi la usi normalmente:
Codice:
String elementToAdd = "stringa da inserire";
ArrayList<String> innerList = list.get(i);
innerlist.add(elementToAdd);
Per ottenere la lista i però essa deve essere già presente in list, altrimenti otterrai un'eccezione. Se sai già il numero di liste che devono essere contenute in list puoi inizializzarle così:
Codice:
for(int i = 0; i < numInnerLists; i++)
{
	list.add(new ArrayList<String>());
}
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2011, 09:41   #13
FrankieB76
Member
 
Iscritto dal: Oct 2008
Messaggi: 97
ciao wingman87, grazie per la risposta.

allora, alcuni dubbi:
il mio lista non è un ArrayList di ArrayList, ma un ArrayList di array. questo perche sto leggendo delle righe da un file, e ogni riga la trasformo in un array con la String[] str_list = line.trim().split("\\s").

il singolo elemento da inserire nell'array list è un array della forma, per esempio: [0 1 2 3]. l'obiettivo finale sarebbe quello di ottenere una roba del tipo: [[0 1 2 3] [0 2 4 6 8] [0 3 4 5 8 9 11 12]].

facendo come faccio io (sbagliando), mi viene invece una roba del tipo:
[0 1 2 3 0 2 4 6 8 0 3 4 5 8 9 11 12], ovvero mi aggiunge il pezzetto di array in fila al precedente, non considerandoli come elementi diversi, in posizione diversa nell'ArrayList.

detto ciò, come gestisco la seconda e la terza frazione di codice che mi hai suggerito tu? considerato che io so prima quanti sono gli elementi dell'ArrayList (ovvero quati array devo inserire) e so la lunghezza, di volta in volta, degli array.

grazie mille.
FrankieB76 è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2011, 10:20   #14
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2774
Alla fine è solo una questione di tipi, i metodi da usare restano gli stessi. La dichiarazione della lista sarà:
Codice:
ArrayList<String[]> list = new ArrayList<String[]>();
Mentre l'inserimento dell'array str_list:
Codice:
list.add(str_list);
La terza parte del codice che avevo scritto prima non ti serve in questo caso.

Oppure puoi utilizzare un ArrayList di ArrayList di String (la dichiarazione è quella del mio primo post) ed aggiungere gli elementi in questo modo:
Codice:
Collections.addAll(list, str_list);
In questo caso dovrai anche fare l'inizializzazione dell'ArrayList

Riferimenti:
http://download.oracle.com/javase/6/...ArrayList.html
http://download.oracle.com/javase/6/...llections.html

Ultima modifica di wingman87 : 25-08-2011 alle 10:25.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2011, 10:24   #15
FrankieB76
Member
 
Iscritto dal: Oct 2008
Messaggi: 97
adesso provo con ilprimo suggerimento. in pratica mi dici che banalmente avevo sbagliato la dichiarazione dell'ArrayList, mettendo invece di

ArrayList list = new ArrayList();

un

ArrayList<String[]> list = new ArrayList<String[]>();

così dovrebbe funzionare anche la .add che invece a me non funzionava.

vediamo che succede. comunque mi sbircio anche la Class Collections che non conoscevo!

grazie ancora, ciao!
FrankieB76 è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2011, 10:31   #16
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2774
Quote:
Originariamente inviato da FrankieB76 Guarda i messaggi
così dovrebbe funzionare anche la .add che invece a me non funzionava.
Se ho capito bene tu con .add aggiungevi un elemento dell'array, non l'array intero. L'errore è quello.
La questione dei tipi generici è utile ai fini dei check statici di compilazione, ma non è un errore (non lo è se non li dichiari, e in tal caso il compilatore restituisce un warning, lo è se dichiari i tipi generici sbagliati ma in questo caso il compilatore non compila).
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2011, 10:37   #17
FrankieB76
Member
 
Iscritto dal: Oct 2008
Messaggi: 97
guarda, aggiungevo non il singolo elemento array ad una serie di array, ma il contenuto del singolo array veniva messo in fila appresso agli altri contenuti. ma adesso mi sembra chiaro il perche!
FrankieB76 è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2011, 11:12   #18
FrankieB76
Member
 
Iscritto dal: Oct 2008
Messaggi: 97
però la .add continua a non funzionare.

io devo aggiungere la mia stringa che è:

String[] str_list = line.trim().split("\\s");

ovvero la leggo da un file, e poi faccio la add come:

lista.add (Integer.parseInt(str_list[i]));

ovviamente col fatto che la lista di stringhe la trasformo in interi ho cambiato anche la dichiarazione dell'ArrayList in:

ArrayList <int []> lista = new ArrayList<int []> ();

oppure ho provato lasciando la dichiarazione dell'ArrayList con le stringhe, e aggiungendo:

lista.add (str_list[i]);

ma mi da sempre errore con la add, mi dice di aggiungere un argomento [], cosa che non mi chiedeva le altre volte che l'ho usata...
FrankieB76 è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2011, 11:29   #19
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2774
Il fatto è che str_list[i] è un elemento dell'array, non l'array.
Quindi con
Codice:
lista.add(str_list[i]);
aggiungi un elemento a lista, non ad uno degli array contenuti in lista.

Ecco come potresti fare:
Codice:
String[] str_list = line.trim().split("\\s");
int numElements = str_list.length;
int[] intArray = new int[numElements];
for(int i = 0; i < numElements; i++)
{
	intArray[i] = Integer.parseInt(str_list[i]);
}
lista.add(intArray);
E la dichiarazione giusta di lista è l'ultima che hai usato:
Codice:
ArrayList<int[]> lista = new ArrayList<int[]>();
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2011, 11:31   #20
FrankieB76
Member
 
Iscritto dal: Oct 2008
Messaggi: 97
hai ragione, quell'è l'elemento dell'array, non tutto l'array secco...

adesso provo!
FrankieB76 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione HONOR Magic V5: il pieghevole ultra sottile e co...
Una power station portatile da 1075Wh e ...
PayPal porta in Italia i pagamenti a rat...
ESA Solar Orbiter ha studiato il flusso ...
Larry Ellison guadagna 101 miliardi in u...
Johnson Controls amplia la gamma di solu...
NASA Perseverance: il rover potrebbe ave...
Quelli di Immuni si 'pappano' Vimeo: Ben...
Changan lancia la Deepal S05 in Europa, ...
Substrati in vetro, Intel smentisce le v...
ECOVACS DEEBOT T50 PRO OMNI Gen2 fa piaz...
Windelo 62: catamarano a vela che unisce...
Francia, in arrivo un incentivo di 1.000...
Haier, la sorpresa a IFA: la lavatrice C...
GeForce RTX 5000 SUPER in arrivo? Sembra...
Ionity prova una soluzione contro i ladr...
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: 07:33.


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