Torna indietro   Hardware Upgrade Forum > Software > Programmazione

BOOX Note Air4 C è uno spettacolo: il tablet E Ink con Android per lettura e scrittura
BOOX Note Air4 C è uno spettacolo: il tablet E Ink con Android per lettura e scrittura
BOOX Note Air4 C rappresenta l'ultima incarnazione della categoria dei tablet E Ink a colori di Onyx, e combina le prestazioni di un dispositivo Android con l'ottima tecnologia Kaleido 3 per il display. Con schermo da 10,3 pollici, un processore Qualcomm Snapdragon 750G e 6 GB di RAM, promette un'esperienza completa per lettura, scrittura e produttività. Il prezzo lo posiziona nel segmento premium, ma questo dispositivo è un vero spettacolo!
Recensione Sony Xperia 1 VII: lo smartphone per gli appassionati di fotografia
Recensione Sony Xperia 1 VII: lo smartphone per gli appassionati di fotografia
Sony Xperia 1 VII propone un design sobrio e funzionale, con un comparto fotografico di ottimo livello caratterizzato da uno zoom continuo e prestazioni generali da top di gamma puro. Viene proposto con una personalizzazione software sobria e affidabile, ma presenta qualche criticità sul fronte ricarica rapida. Il dispositivo punta su continuità stilistica e miglioramenti mirati, rivolgendosi al solito pubblico specifico del brand giapponese.
Attenti a Poco F7: può essere il best buy del 2025. Recensione
Attenti a Poco F7: può essere il best buy del 2025. Recensione
Poco F7 5G, smartphone che punta molto sulle prestazioni grazie al processore Snapdragon 8s Gen 4 e a un display AMOLED da ben 6,83 pollici. La casa cinese mantiene la tradizione della serie F offrendo specifiche tecniche di alto livello a un prezzo competitivo, con una batteria generosissima da 6500 mAh e ricarica rapida a 90W che possono fare la differenza per gli utenti più esigenti.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-06-2010, 08:46   #1
Miky Mouse
Senior Member
 
L'Avatar di Miky Mouse
 
Iscritto dal: Mar 2002
Città: Roma
Messaggi: 4205
[java] iterazione su ArrayList

ciao a tutti,

ho un problema ad iterare su un ArrayList di Double... (semplificando la cosa) se faccio:
Codice:
for(int x=0; x<vettoreDiVettori.size(); x++){
   System.out.println("indice: "+ x);
   System.out.println("elemento: "+ vettoreDiVettori.get(x) );
}
questo mi ritorna l'output giusto (ma credo che sia concettualmente sbagliato iterare così, giusto?).

il problema è che gli elementi all'interno del vettore non sono unici, per cui con una cosa del tipo:
Codice:
for(ArrayList<Double> x : vettoreDiVettori){
   System.out.println("indice: "+vettoreDiVettori.indexOf(x));
   System.out.println("elemento: "+ vettoreDiVettori.get(x) );
}
ottengo un output sbagliato (perché la get mi torna sempre il PRIMO indice del numero che gli passo come argomento, e non quello che mi servirebbe...)

come si risolve un problema del genere?
__________________
| Il mio blog |
Miky Mouse è offline   Rispondi citando il messaggio o parte di esso
Old 24-06-2010, 13:03   #2
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da Miky Mouse Guarda i messaggi
Codice:
for(int x=0; x<vettoreDiVettori.size(); x++){
   System.out.println("indice: "+ x);
   System.out.println("elemento: "+ vettoreDiVettori.get(x) );
}
questo mi ritorna l'output giusto (ma credo che sia concettualmente sbagliato iterare così, giusto?).
Perchè dici che è concettualmente sbagliato iterare in quel modo?
A me sembra vada benissimo...


Se invece vuoi proprio usare il "for each":
Quote:
Originariamente inviato da Miky Mouse Guarda i messaggi
il problema è che gli elementi all'interno del vettore non sono unici, per cui con una cosa del tipo:
Codice:

for(ArrayList<Double> x : vettoreDiVettori){
System.out.println("indice: "+vettoreDiVettori.indexOf(x));
System.out.println("elemento: "+ vettoreDiVettori.get(x) );
}

ottengo un output sbagliato (perché la get mi torna sempre il PRIMO indice del numero che gli passo come argomento, e non quello che mi servirebbe...)

come si risolve un problema del genere?
E' chiaro che se nel vettoreDiVettori hai dei vettori duplicati la indexOf ti restituirà sempre il primo che incontra.

Devi gestire un contatore esplicitamente, in modo che ti faccia da indice:
Codice:
int counter = 0;
for (ArrayList<Double> list : vettoreDiVettori) {
    System.out.println("indice: "+counter);
    System.out.println("elemento: "+ list);
    counter++;
}
Ma a questo punto tanto vale utilizzare il "for classico".
Considera che il "for each" altro non è che "zucchero sintattico" poichè dietro le quinte usa un Iterator per scorrere la collezione.


Se invece ti interessa solo iterare su vettoreDiVettori per recuperare ogni singolo ArrayList<Double> contenuto (e non ti interessa l'indice) il codice si snellisce notevolmente:
Codice:
for (ArrayList<Double> list : vettoreDiVettori)
    System.out.println(list.toString());
equivale a questo:
Codice:
Iterator<ArrayList<Double>> it = vettoreDiVettori.iterator();
while (it.hasNext()) {
    ArrayList<Double> list = it.next();
    System.out.println(list.toString());
}
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 24-06-2010 alle 13:08.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


BOOX Note Air4 C è uno spettacolo: il tablet E Ink con Android per lettura e scrittura BOOX Note Air4 C è uno spettacolo: il tab...
Recensione Sony Xperia 1 VII: lo smartphone per gli appassionati di fotografia Recensione Sony Xperia 1 VII: lo smartphone per ...
Attenti a Poco F7: può essere il best buy del 2025. Recensione Attenti a Poco F7: può essere il best buy...
Recensione Samsung Galaxy Z Fold7: un grande salto generazionale Recensione Samsung Galaxy Z Fold7: un grande sal...
The Edge of Fate è Destiny 2.5. E questo è un problema The Edge of Fate è Destiny 2.5. E questo ...
Droni solari Airbus volano nella stratos...
Colpo da 15 milioni di dollari: chi ha r...
Elon Musk lancia l'allarme su GPT-5: 'Op...
iPhone 17 Pro sarà più cos...
Leapmotor spinge sull'acceleratore: nuov...
Toyota vuole battere i produttori cinesi...
Colpo grosso di Musk: 14 ricercatori Met...
Lip-Bu Tan a testa alta: il CEO di Intel...
GPT5 disponibile per tutti e puoi gi&agr...
Nasce l'alternativa a Worldcoin: Humanit...
ASUSTOR presenta i nuovi NAS da rack Loc...
iPhone 18, sensori Samsung realizzati in...
Xiaomi conquista il terzo posto nel merc...
Pulizia millimetrica senza muovere un di...
Uber, oltre 400 mila segnalazioni di agg...
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: 16:56.


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