Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Dubbio su un metodo

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339

    Dubbio su un metodo

    Ciao

    In un esercizio che mi è stato dato, mi si chiede di scrivere un metodo rimuovi(E elem) che rimuove da un contenitore dati l'elemento ricevuto come parametro e nel caso non sia presente restituisce false .

    Io l'ho scritto in questo modo:

    codice:
    public boolean rimuovi(E elem) {
    		Iterator<E> it = this.iterator();
    		while(it.hasNext()){
    			E elemento = it.next();
    			if(elemento.equals(elem))
    			it.remove();
    			return true;
    			
    		}
    		return false;
    	}
    nella soluzione però il metodo era scritto cosi :

    codice:
    public boolean rimuovi(E elem) {
    		Iterator<E> it = this.iterator();
    		while(it.hasNext()){
    			E elemento = it.next();
    			if(!elemento.equals(elem)) continue;
    			it.remove();
    			return true;
    			
    		}
    		return false;
    	}
    A me sembra che quello che ho scritto io sia pure corretto.
    E cosi?
    Ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    analizza un po il codice e capisci l'errore (e usa le parentesi per non confonderti)
    Hai testato il tuo codice? io dico di no.
    In ogni caso tu dici: se l'elemento è uguale rimuovilo, ma in ogni caso esci.
    Il prof ti dice, se l'elemento non è uguale, controlla il successivo.
    A parer mio un modo che aumenta la leggibilità del metodo è questo
    codice:
    public boolean rimuovi(E elem) {
               boolean ret = false; 
    		Iterator<E> it = this.iterator();
    		while(it.hasNext()){
    			E elemento = it.next();
    			if(elemento.equals(elem)){
    
              			it.remove();
    	         		ret = true;
                                    break;
    			}
    		}
    		return ret;
    	}
    se l'elemento è diverso, continui a controllare il successivo. Se è uguale rimuovi ed esci (sempre che nella tua collezione non ci siano doppioni).
    Infine considera che io ho messo un solo return, un solo punto di ingresso e di uscita, utile in progetti più complessi
    Nota anche l'uso delle parentesi (e prendi l'abitudine di metterle sempre!!!)
    RTFM Read That F*** Manual!!!

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Dubbio su un metodo

    Originariamente inviato da Markus85
    codice:
    			if(elemento.equals(elem))
    codice:
    			if(!elemento.equals(elem)) continue;
    A me sembra che quello che ho scritto io sia pure corretto.
    E cosi?
    Sono uguali come concetto/risultato finale. Cambia solo la logica per fare o no il remove.
    Nel tuo: se trovato, allora rimuove e ritorna
    Nell'altro: se non trovato, passa ad eseguire subito un nuovo ciclo (saltando remove e return)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339
    Ok Andrea.
    Grazie
    Ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157

    Re: Re: Dubbio su un metodo

    Originariamente inviato da andbin
    Sono uguali come concetto/risultato finale. Cambia solo la logica per fare o no il remove.
    Nel tuo: se trovato, allora rimuove e ritorna
    Nell'altro: se non trovato, passa ad eseguire subito un nuovo ciclo (saltando remove e return)
    attento che nel primo caso sia se fa la remove, sia se non la fa esce con true
    Occhio alle parentesi!!!
    RTFM Read That F*** Manual!!!

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: Dubbio su un metodo

    Originariamente inviato da valia
    attento che nel primo caso sia se fa la remove, sia se non la fa esce con true
    Occhio alle parentesi!!!
    Cavoli, ero davvero di fretta, ho quotato solo i due equals, ragionando solo su di essi e non ho fatto caso alle questioni sulla struttura.

    Il codice di Markus85 sarebbe equivalente all'altro SE remove e return fossero racchiusi da un blocco { } del if.

    La prossima volta starò più attento. Però voi cercate di scrivere sempre il codice ben indentato e usando { } anche se if/for/ecc... hanno solo 1 istruzione. Perché a quel punto la struttura e logica del codice sarebbe evidente e inequivocabile!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.