Visualizzazione dei risultati da 1 a 6 su 6

Discussione: !variabile e array

  1. #1
    Utente bannato
    Registrato dal
    Nov 2007
    residenza
    Acicatena (Catania)
    Messaggi
    1,854

    !variabile e array

    Ragazzi,
    potreste chiarmi una cosa?

    codice:
    		for(int i = 0; i < dataSize && !trovato; i++){
    			
    			farmaco p = ((farmaco) ListaFarmaci[i]);
    			
    			if(p.codice.equals(cod)){
    				//rimuove il farmaco dall'array
    				System.arraycopy(ListaFarmaci,i+1,ListaFarmaci,i,ListaFarmaci.length-i-1);
    				dataSize--;
    				trovato = true;
    			}
    			
    		}
    La funzione arraycopy cosa fa esattamente?

    Inoltre !trovato serve a dire -> se trovato!=0, cioè true in questo caso?

    Grazie!

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

    Re: !variabile e array

    Originariamente inviato da Felino
    La funzione arraycopy cosa fa esattamente?
    Copia da una array ad un altro, eventualmente anche solo una porzione.

    La signature del metodo è eloquente, credo:

    arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

    C'è un array sorgente e uno destinazione.

    Originariamente inviato da Felino
    Inoltre !trovato serve a dire -> se trovato!=0, cioè true in questo caso?
    ! = negazione logica. Quindi concettualmente "se non trovato" o per dirlo in termini di confronto: se trovato è false
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente bannato
    Registrato dal
    Nov 2007
    residenza
    Acicatena (Catania)
    Messaggi
    1,854
    Quindi posso dire che:

    copia l'elemento di posta i+1 al posto dell'elemento i e decrementa di 1 il vettore?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Felino
    copia l'elemento di posta i+1 al posto dell'elemento i e decrementa di 1 il vettore?
    No, non copia solo 1 elemento! Sposta indietro di una posizione tutti gli elementi da un certo punto in avanti. Il srcPos è i+1 mentre il destPos è i (quindi appunto sposta indietro).

    Se l'array fosse (e1,e2... sono gli elementi):

    { e1, e2, e3, e4, e5, e6 }

    e i vale 2 (0..1..2, si vuole rimuovere il terzo elemento) dopo la copia avresti:

    { e1, e2, e4, e5, e6, e6 }

    L'array non si ridimensiona fisicamente come lunghezza. E quel 'dataSize' presumo appunto che indica la dimensione "logica" dei dati. Quanti elementi nell'array sono quelli "utili" per il codice che gestisce l'insieme di quei dati.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente bannato
    Registrato dal
    Nov 2007
    residenza
    Acicatena (Catania)
    Messaggi
    1,854
    Grazie...adesso ho capito!

    Un'ultima domandina: per rimuovere anche l'elemento e6, cioè per non stamparlo due volte, cosa dovrei fare?

    L'istruzione: ListaFarmaci.length-i-1 quindi non serve a non far stampare l'ultimo elemento?

    Grazie ancora....

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Felino
    Un'ultima domandina: per rimuovere anche l'elemento e6, cioè per non stamparlo due volte, cosa dovrei fare?
    No ma ... allora ripeto, è quel 'dataSize' che dovrebbe indicare la dimensione "logica" della lista (detto in generale) degli elementi. E quindi non devi trattare "tutto" l'array ma solo gli indici da 0 a dataSize-1 compresi.

    Che poi eliminando un elemento in mezzo, l'ultimo risulta ripetuto fisicamente, beh, questo tecnicamente si potrebbe evitare annullando il reference finale. Ma non è questa una cosa grave. Quello che conta è tenere traccia della dimensione logica della lista.
    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.