Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    11

    Problema

    Salve ho un problema,
    sto scrivendo un programma in java.Ora sono arrivata ad un punto dove non so se posso o no scrivere un determinato codice:
    Ho due liste di Integer, voglio inserire in una terza lista tutti gli elementi della prima lista non presenti nella seconda senza ammissione di doppioni
    Il codice è il seguente:

    codice:
    private static List<Integer> compara(List<Integer> l1, List<Integer> l2){
          LinkedList<Integer> res=new LinkedList<Integer>();
          List<Integer> l3= eliminaDoppi(l1);//metodo scritto successivamente
          Iterator<Integer> it3= l3.iterator();
          Iterator<Integer> it2= l2.iterator();
          for(;;){
                  if(!it3.hasNext()) break;
                  Integer i3=it3.next();
                  while(it2.hasNext()){
                       Integer i2=it2.next();
                       if(i2==i3)break;
                  }
                  res.add(i3);
            }
            return res;
    }

  2. #2
    Io il codice ho provato a leggerlo, ma dopo la seconda riga mi si sono intrecciati gli occhi!!!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3

    Re: Problema

    Originariamente inviato da Tiele7
    Salve ho un problema,
    sto scrivendo un programma in java.Ora sono arrivata ad un punto dove non so se posso o no scrivere un determinato codice:
    Ho due liste di Integer, voglio inserire in una terza lista tutti gli elementi della prima lista non presenti nella seconda senza ammissione di doppioni
    Il codice è il seguente:
    codice:
    private static List<Integer> compara(List<Integer> l1, List<Integer> l2){
          LinkedList<Integer> res=new LinkedList<Integer>();
          List<Integer> l3= eliminaDoppi(l1);//metodo scritto successivamente
          Iterator<Integer> it3= l3.iterator();
          Iterator<Integer> it2= l2.iterator();
          for(;;){
                  if(!it3.hasNext()) break;
                  Integer i3=it3.next();
                  while(it2.hasNext()){
                       Integer i2=it2.next();
                       if(i2==i3)break;
                  }
                  res.add(i3);
            }
            return res;
    }
    Usa i Tag CODE per presentare il tuo codice.

    Detto questo, l'uso dell'iteratore è inutile...puoi scorrere le liste come se fossero array o quasi.
    codice:
    private static List<Integer> compara(List<Integer> l1, List<Integer> l2){
          LinkedList<Integer> l3 = new LinkedList<Integer>();
    
          for(int i = 0; i < l1.size(); i++){
               if( l2.indexOf( l1.get(i) ) == -1 && l3.indexOf( l1.get(i) ) == -1 )
                   l3.add( l1.get(i) );
          }
    
          return l3;
    }

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    11
    Mi scuso per la scrittura ma sono nuova del forum ringrazio VincenzoTheBest ke invece di criticare mi ha spiegato come fare.
    Ma nel caso della soluzione proposta da VincenzoTheBest forse non sono riuscita a spiegarmi bene ma ogni elemento della prima lista deve essere confrontato con tutti gli elementi della seconda fino a qnd trova lo stesso elemento se invece non lo trova questo elemento viene aggiunto nella lista res.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    se ho capito il problema, basta usare 2 cicli annidati...uno cicla la prima lista, l'altro la seconda...

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Prendi anche visione del Regolamento interno.
    Oltre all'uso degli appositi tag CODE per il posting del codice, c'è il problema del titolo della discussione. E' importante per il forum che le discussioni abbiano un titolo in grado di far capire, a chi lo legge, il contenuto della discussione.

    Dato che chiunque posta nel forum ha un problema, il titolo "Problema" non dice nulla di più di quello che già si sa.

    Correggo io. In futuro, usa titoli più significativi.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Originariamente inviato da Tiele7
    ogni elemento della prima lista deve essere confrontato con tutti gli elementi della seconda fino a qnd trova lo stesso elemento se invece non lo trova questo elemento viene aggiunto nella lista res.
    La soluzione proposta è equivalente e fa esattamente questo:
    inserisce una volta nella terza lista tutti gli elementi della prima lista che non sono contenuti nella seconda.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.