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!
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!
Quindi hai due arrayOriginariamente inviato da Felino
Ho un array e un vettore![]()
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
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.
Io userei LinkedHashSet, che mantiene l'insertion order!Originariamente inviato da Felino
Potresti farmi un semplice esempio di java.util.TreeSet applicata sia ad un vettore che ad un array.
Chiaramente, come si vede, ho usato pesantemente i generics.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; } }
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
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!
È il "for-each" di Java 5.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)
Per il mio codice sopra, equivalente a fare:
codice:for (int i = 0; i < arr.length; i++) { set.add(arr[i]); }
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
array = parola ingleseOriginariamente 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?
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
Grazie ad andbin per l'ottima spiegazione!
Scusami Alex per la pessima papera!!!
Ma quind il Vector è la Lista?
Che confusione!!!!
java.util.ArrayList e java.util.Vector (più alcuni altri) implementano la interfaccia java.util.List. Quindi appunto sono delle "liste".Originariamente inviato da Felino
Ma quind il Vector è la Lista?![]()
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Andrea...un'ultimo favore...il codice che mi hai postato senza generics come viene?Originariamente inviato da andbin
Io userei LinkedHashSet, che mantiene l'insertion order!
Chiaramente, come si vede, ho usato pesantemente i generics.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; } }