[ Cyrus_M @ 09.03.2008. 13:48 ] @
Potreban mi je kod za sortiranje liste (odnosno brojeva unutar nje). Nacin i tip sortiranja nisu bitni, samo da program obavlja svoju funkciju i da nije komplikovan! Bilo kakva pomoc je dobrodosla... ! |
[ Cyrus_M @ 09.03.2008. 13:48 ] @
[ anon315 @ 09.03.2008. 13:58 ] @
java.sun.com/j2se/1.5.0/docs/api/java/util/Collections.html#sort(java.util.List)
[ IDE @ 10.03.2008. 10:01 ] @
Zasto ne koristis TreeSet?
Kada u TreeSet stavis neki element, lista se automatski sortira... Mozda je jedino lose sto ne dozvoljava duplikate. Pogledaj, siguran sam da ima i lista koja nema ovo ogranicenje, a automatski sortira, ali - iskreno, zaboravio sam koja je to... Procitaj i ovo: http://www.java-tips.org/blog/...ng-collectionssort-method.html Ako radis sa nekom drugom kolekcijom, a samo stavljas primitivne promjenjive ( int npr) onda ne trebas ni implementirati Comparable nego sortiras samo sa Code: Collections.sort(ime_liste); kao sto ti je i Vanja Petreski dao link vec... [ anon315 @ 10.03.2008. 10:50 ] @
Set nije lista. Oboje SU kolekcije. Nije lose sto set ne dozvoljava duplikate, jer je to semantika seta :)
Liste nemaju ovo ogranicenje. I mislim da ne postoji implementacija koja automatski sortira. Eventualno da sam napises SortedArrayList (http://www.koders.com/java/fid...072880A9A3CB1BABB215DA6AE.aspx) Mada mi se cini da bi posao mogao da zavrsi PriorityQueue... [ Java Beograd @ 11.03.2008. 08:03 ] @
Evo nešto malo koda. Ja ovo sortiranje upotrbljavam svuda i uvek. Objekti ko se sortiraju treba da implamantiraju Sortable - i milina jedna. Dodao sam i za stringove, ima u donjem delu klase.
Za po Code: import java.util.*; public class ObjectQSorter { public void sort(Vector v, boolean ascending, int sortKey) { int size = v.size(); Object arr[] = new Object[size]; for (int i=0; i<size; i++) { arr[i] = v.elementAt(i); } quickSort(arr,0, arr.length -1, ascending, sortKey); v.removeAllElements(); for (int i=0; i<size; i++) { v.addElement(arr[i]); } } public void sort(Vector v, int sortKey) { sort(v, true, sortKey); } public void sort(Vector v) { sort(v, true, 0); } private void quickSort(Object a[], int lo0, int hi0, boolean ascending, int sortKey) { int lo = lo0; int hi = hi0; String mid; if ( hi0 > lo0) { mid = ((Sortable)(a[ ( lo0 + hi0 ) / 2 ])).getSortKey(sortKey); while( lo <= hi ) { while( ( lo < hi0 ) && (greater(mid,((Sortable) a[lo]).getSortKey(sortKey), ascending))) { ++lo; } while( ( hi > lo0 ) && (greater(((Sortable)a[hi]).getSortKey(sortKey),mid, ascending))) { --hi; } if( lo <= hi ) { swap(a, lo, hi); ++lo; --hi; } } if( lo0 < hi ) { quickSort( a, lo0, hi, ascending, sortKey ); } if( lo < hi0 ) { quickSort( a, lo, hi0, ascending, sortKey ); } } } public void sortStrings(Vector v, boolean ascending) { int size = v.size(); String arr[] = new String[size]; for (int i=0; i<size; i++) { arr[i] = (String) v.elementAt(i); } quickSortString(arr,0, arr.length -1, ascending); v.removeAllElements(); for (int i=0; i<size; i++) { v.addElement(arr[i]); } } public void sortStrings(Vector v) { sortStrings(v, true); } private void quickSortString(String a[], int lo0, int hi0, boolean ascending) { int lo = lo0; int hi = hi0; String mid; if ( hi0 > lo0) { mid = a[ ( lo0 + hi0 ) / 2 ]; while( lo <= hi ) { while( ( lo < hi0 ) && (greater(mid, a[lo], ascending))) { ++lo; } while( ( hi > lo0 ) && (greater(a[hi],mid, ascending))) { --hi; } if( lo <= hi ) { swap(a, lo, hi); ++lo; --hi; } } if( lo0 < hi ) { quickSortString( a, lo0, hi, ascending); } if( lo < hi0 ) { quickSortString( a, lo, hi0, ascending); } } } private void swap(Object a[], int i, int j) { Object T; T = a[i]; a[i] = a[j]; a[j] = T; } private boolean greater(String s1, String s2, boolean ascending) { if (ascending) { return (s1.compareTo(s2) > 0 ); } else { return (s1.compareTo(s2) < 0 ); } } } A evo i interfeksa Sortable Code: public interface Sortable { public String getSortKey(int type); } [ Cyrus_M @ 13.03.2008. 12:18 ] @
Ej decki, hvala vam puno, evo vec sam se latio posla... ako jos negdje zapnem javim se!!!
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|