Torna indietro   Hardware Upgrade Forum > Software > Programmazione

L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
La parola d'ordine al Nextcloud Summit 2026, che si è tenuto a Monaco, è stata "sovranità". Non come è spesso usato questo termine in politica ma, al contrario, come capacità positiva di decidere il proprio destino tecnologico, con modalità collaborative e aperte. L'Europa dice già molto nel mondo open source, che viene visto come mezzo per ottenere la tanto agognata autonomia digitale
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete implementa due bracci estensibili, per spazzola e moccio, che si spingono ben oltre quanto visto sino ad oggi permettendo una pulizia di casa ancor più capillare e precisa
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
La tecnologia SQD-Mini LED di TCL arriva sul taglio da 65 pollici con la serie C8L: 2040 zone, pannello WHVA 2.0 e un picco che alle rilevazioni delle sonde tocca i 4400 nit nel profilo Filmmaker e un HDR quasi perfetto
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 31-05-2011, 11:24   #1
miao84
Member
 
Iscritto dal: Oct 2009
Messaggi: 239
[JAVA] merge di due arraylist particolare

Ho creato un "ciclo" che dati due arraylist controlla i primi tre elementi dell'array, degli arraylist iterati, e se questi sono uguali un terzo arraylist prende il risultato del secondo, altrimenti il risultato del primo. Naturalmente il primo arraylist è popolato con dimensione >= al secondo. In parole povere...

Codice:
final List<List<?>> risultati1 = new ArrayList<List<?>>();
final List<List<?>> risultati2 = new ArrayList<List<?>>();
final List<List<?>> risultati_totali = new ArrayList<List<?>>();

.........


 int i = 0;
 int j = 0;

      if (!risultati2.isEmpty()){
        
        while (i<risultati1.size()){
          while(j<risultati2.size()){            
              
              if (risultati1.get(i).get(0).equals(risultati2.get(j).get(0))&&risultati1.get(i).get(1).equals(risultati2.get(j).get(1))&&risultati1.get(i).get(2).equals(risultati2.get(j).get(2))){
                //se i primi tre elementi sono uguali prendo risultati2
                risultati_totali.add(risultati2.get(j));
                i+=1;
                j+=1;
              }else{
                //se no inserisco i risultati1 (risultati1 e risultati2 sono popolati in maniera ordinata rispetto ai 3 elementi controllati)
                risultati_totali.add(risultati1.get(i));
                i+=1;
              }
          }
          //non ci sono piu elementi in risultati2
          risultati_totali.add(risultati1.get(i));
          i=i+1;
        } 
        metodo(risultati_totali);
      
      }else if (risultati2.isEmpty()){
        //risultati2 è vuoto
        metodo(risultati1);
      }
Mi è stato chiesto di rifarlo in maniera "object oriented" (credo utilizzando meglio generics, mappe e quant'altro)...qualche suggerimento??

Ultima modifica di miao84 : 31-05-2011 alle 11:34.
miao84 è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2011, 13:39   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Bisognerebbe vedere il testo dell'esercizio e il codice completo perché l'orientamento agli oggetti non è quantità o una qualità ma un punto di vista: in senso OO il tuo codice ha un certo significato. E' poi possibile che questo significato corrisponda o non corrisponda a quello che avrebbe dovuto avere.

L'unico intoppo che vedo è che il codice incollato include una precondizione implicita (che le liste di valori negli arraylist abbiano almeno tre elementi). Se questa precondizione non è controllata da qualche altra parte allora il programma è soggetto al verificarsi di un'eccezione (IndexOutOfBoundsException).
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2011, 13:58   #3
miao84
Member
 
Iscritto dal: Oct 2009
Messaggi: 239
il codice va bene, non andrà mai in eccezione poichè risultati1 sarà sempre popolato da almeno un elemento contenente 5 valori (contiene risultati di una query che "deve" restituire risultati di default ). Al massimo aggiungo un controllo !isEmpty() e se sono vuoti entrambi gli arraylist viene segnalato. E' risultati2 che contiene valori "calcolati" dal db e quindi se presenti devono avere la priorità su quelli di default. Diciamo che la mia soluzione è molto "algoritmica", magari ci sono strutture dati e metodi di classe che "aiutano" ad effettuare il controllo e rendono il codice "meno standard"
miao84 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
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...
Il digital twin entra nella sicurezza in...
Portatili e Prime Day: ecco i magnifici ...
Il Prime Day dei robot aspirapolvere: da...
Google introduce nuovi controlli per la ...
Il robot umanoide Atlas arriva in fabbri...
CarPlay e Android Auto senza cavi e senz...
Tutte le offerte che meritano del Prime ...
HONOR esagera: in arrivo uno smartphone ...
Prime Day smartphone: Samsung apre la co...
Iliad ammette l'errore sulla Top 170 Plu...
Due novità IA da Google: Gemini 3...
Prime Day TV: LG, Samsung, Hisense, TCL ...
Acer rafforza la propria offerta per le ...
Prime Day clima e fresco in casa: Pingui...
Microsoft corregge una valanga di bug su...
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: 10:27.


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