Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339

    Stampare gli elementi di una LinkedList che non sono presenti in un altra LinkedList

    Ciao a tutti

    Devo scrivere un programmino che stampa gli elementi di una collezione(in questo caso una LinkedList di numeri interi) che non sono presenti in un altra collezione(sempre una LinkedList di numeri interi) e senza ripetizioni.

    Ho abbozzato qualcosa ma il programma mi stampa a video una ripetizione del primo numero.

    codice:
    //Altro codice
                    LinkedList<Integer> lista = new LinkedList<Integer>();
    		LinkedList<Integer> lista2 = new LinkedList<Integer>();
    		LinkedList<Integer> listar = new LinkedList<Integer>();
    
                    Iterator<Integer> itl = lista.iterator();
    		Iterator<Integer> itl2 = lista2.iterator();
    		while(itl.hasNext()){
    			int n = itl.next();
    			while(itl2.hasNext()){
    				int n2 = itl2.next();
    				if(n2==n) continue;
    				listar.add(n);
    			}
    					
    					
    				
    			}
    		        System.out.println(lista.toString());
    		 	System.out.println(lista2.toString());
    			System.out.println(listar.toString());
    			
    		}
    quello che stampa a video è questo

    codice:
    [3, 4, 5, 3, 2, 1, 5, 5, 9, 8, 3, 2, 4, 7, 7, 9, 9, 23, 34, 55, 99, 100]
    [2, 3, 5, 4, 4, 6, 8, 8, 7, 9, 9, 0, 1, 2, 4, 3, 9]
    [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
    Il risultato dovrebbe essere:
    [23, 34, 55, 99, 100]

    Qualcuno mi aiuta?

  2. #2
    codice:
    LinkedList<Integer> lista = new LinkedList<Integer>();
    LinkedList<Integer> lista2 = new LinkedList<Integer>();
    
    HashMap<Integer, String> map = new HashMap<Integer, String>();
    for (Integer i : lista) {
    	if (!lista2.contains(i)) {
    		map.put(i, "");
    	}
    }
    
    for (Integer key : map.keySet()) {
    	System.out.println(key);
    }
    Utilizzo la HashMap solo perchè è la prima cosa che mi è venuta in mente per evitare le eventuali ripetizioni.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    non l'ho testato, ma dovrebbe funzionare anche questo
    codice:
    LinkedList<Integer> lista = new LinkedList<Integer>();
    LinkedList<Integer> lista2 = new LinkedList<Integer>();
    
    for (Integer i : lista) {
    	if (!lista2.contains(i)) {
                 System.out.println(i);
    	}
    }
    in quanto sui tipi primitivi i wrapper dovrebbero avere equals e hashcode implementati correttamente.
    Oltretutto Integer è anche comparable, non so cosa serva di più

  4. #4
    Però così stampa anche eventuali ripetizioni di valori contenuti nella lista1 e non nella lista2.

    Originariamente inviato da Markus85
    ...e senza ripetizioni.
    Per questo ho utilizzato una HashMap.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    vero non mi ricordavo le ripetizioni...scusa dopo il lavoro sono stanca...
    RTFM Read That F*** Manual!!!

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339
    Capito.
    Grazie Ragazzi!
    Ciao

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.