Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Il Distinct in java

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

    Il Distinct in java

    Ragazzi..ho cercato e ricercato nella docs di java ma niente.

    Ho un array e un vettore, dovrei estarre fuori solo valori distinti presenti all'interno di essi, sapresti indicarmi come fare?

    Grazie!

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Il Distinct in java

    Originariamente inviato da Felino
    Ho un array e un vettore
    Quindi hai due array
    Per ottenere un array contenente ogni elemento una sola volta puoi creare un java.util.TreeSet in cui inserisci tutti gli elementi del tuo array (i set hanno la caratteristica di non accettare elementi duplicati al loro interno). Se ora "trasformi" il tuo set in un array troverai ogni elemento presente in singola copia.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente bannato
    Registrato dal
    Nov 2007
    residenza
    Acicatena (Catania)
    Messaggi
    1,854
    Ok sul fatto che array e vettore possono essere considerati simili, ma dal punto di vista della scansione non si effettua diversamente?

    esempio:
    for(i=0; i<vector.size(), i++){ .....

    for(i=0; i<array.lenght, i++){ .....

    Potresti farmi un semplice esempio di java.util.TreeSet applicata sia ad un vettore che ad un array.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Felino
    Potresti farmi un semplice esempio di java.util.TreeSet applicata sia ad un vettore che ad un array.
    Io userei LinkedHashSet, che mantiene l'insertion order!

    codice:
    import java.util.*;
    
    public class Prova {
        public static void main(String[] args) {
            String[] arr = { "a", "c", "f", "c", "m", "a", "o", "s", "o" };
            List<String> list = Arrays.asList(arr);
    
            System.out.println("PRIMA");
            System.out.println("arr = " + Arrays.toString(arr));
            System.out.println("list = " + list);
    
            String[] arr2 = removeDuplicates(arr, new String[0]);
            List<String> list2 = removeDuplicates(list, new ArrayList<String>());
    
            System.out.println("DOPO");
            System.out.println("arr2 = " + Arrays.toString(arr2));
            System.out.println("list2 = " + list2);
        }
    
        public static <T> T[] removeDuplicates(T[] arr, T[] newArr) {
            LinkedHashSet<T> set = new LinkedHashSet<T>();
    
            for (T t : arr) {
                set.add(t);
            }
    
            return set.toArray(newArr);
        }
    
        public static <T> List<T> removeDuplicates(List<T> list, List<T> newList) {
            LinkedHashSet<T> set = new LinkedHashSet<T>(list);
            newList.addAll(set);
            return newList;
        }
    }
    Chiaramente, come si vede, ho usato pesantemente i generics.
    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
    Provato e ovviamente funziona! Grazie!

    Una sola cosa...non ho mai usato il codice del ciclo for come lo hai scritto te:
    for (T t : arr)

    potresti trasformarlo nel formato:
    for(i=0; i<vector.size(), i++)

    Grazie!

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Felino
    Una sola cosa...non ho mai usato il codice del ciclo for come lo hai scritto te:
    for (T t : arr)
    È il "for-each" di Java 5.

    Per il mio codice sopra, equivalente a fare:

    codice:
    for (int i = 0; i < arr.length; i++) {
        set.add(arr[i]);
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Felino
    Ok sul fatto che array e vettore possono essere considerati simili, ma dal punto di vista della scansione non si effettua diversamente?
    array = parola inglese
    vettore = parola italiana per indicare un array

    Forse tu ti riferisci alle classi ArrayList, Vector ed agli array "classici"
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Utente bannato
    Registrato dal
    Nov 2007
    residenza
    Acicatena (Catania)
    Messaggi
    1,854
    Grazie ad andbin per l'ottima spiegazione!

    Scusami Alex per la pessima papera!!!
    Ma quind il Vector è la Lista?

    Che confusione!!!!

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Felino
    Ma quind il Vector è la Lista?
    java.util.ArrayList e java.util.Vector (più alcuni altri) implementano la interfaccia java.util.List. Quindi appunto sono delle "liste".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    Utente bannato
    Registrato dal
    Nov 2007
    residenza
    Acicatena (Catania)
    Messaggi
    1,854
    Originariamente inviato da andbin
    Io userei LinkedHashSet, che mantiene l'insertion order!

    codice:
    import java.util.*;
    
    public class Prova {
        public static void main(String[] args) {
            String[] arr = { "a", "c", "f", "c", "m", "a", "o", "s", "o" };
            List<String> list = Arrays.asList(arr);
    
            System.out.println("PRIMA");
            System.out.println("arr = " + Arrays.toString(arr));
            System.out.println("list = " + list);
    
            String[] arr2 = removeDuplicates(arr, new String[0]);
            List<String> list2 = removeDuplicates(list, new ArrayList<String>());
    
            System.out.println("DOPO");
            System.out.println("arr2 = " + Arrays.toString(arr2));
            System.out.println("list2 = " + list2);
        }
    
        public static <T> T[] removeDuplicates(T[] arr, T[] newArr) {
            LinkedHashSet<T> set = new LinkedHashSet<T>();
    
            for (T t : arr) {
                set.add(t);
            }
    
            return set.toArray(newArr);
        }
    
        public static <T> List<T> removeDuplicates(List<T> list, List<T> newList) {
            LinkedHashSet<T> set = new LinkedHashSet<T>(list);
            newList.addAll(set);
            return newList;
        }
    }
    Chiaramente, come si vede, ho usato pesantemente i generics.
    Andrea...un'ultimo favore...il codice che mi hai postato senza generics come viene?

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.