2013-07-09 16 views

risposta

0

È necessario scrivere il proprio comparatore e utilizzare Collections.sort(list, comparator) sul proprio ArrayList, che porterà i primi 3 numeri interi in cima (questo è puramente basato sulla logica nel comparatore).

+0

Quindi fare sottocategoria? – kosa

+0

Bene, questo dipende dall'OP. Anche se fa una sottolista, dovrà comunque attraversare la lista per ottenerli. Invece potrebbe semplicemente attraversare la lista ordinata, fino alla 3a posizione e ottenere i valori! IMHO, dovremmo lasciare quella parte all'OP! – SudoRahul

+0

Guardando la domanda e i tag, penso che questo sia più su come ordinare la lista, che su qualsiasi altra cosa! – SudoRahul

0

uso Collections.sort per ordinare e recuperare i primi tre valori

0

Mettere tutti gli elementi in un TreeSet utilizzando TreeSet(Collection c) costruttore quindi utilizzare TreeSet.descendingIterator per ottenere i primi 3 elementi. Un elenco può contenere duplicati, utilizzando TreeSet garantisce di recuperare 3 valori distinti più grandi.

4
List<Integer> list; 
Collections.sort(list); 
List<Integer> top3 = new ArrayList<Integer>(list.subList(list.size() -3, list.size())); 

ho potuto usare semplicemente sottolista, ma l'elenco restituito da sottoelenco() è una vista sulla lista di base, pertanto le modifiche effettuate ci sarebbe riflessa in top3.

1

Fare uso di List#subList(int fromIndex,int toIndex)

Restituisce una vista della porzione di questa lista tra il fromIndex specificato, inclusivo, e toIndex, esclusivo.

yourList.subList(yourList.size() -n, yourList.size()); 

Come da documentazione sottolista

0

Essa dipende dalla dimensione della lista e ciò che si desidera prestazioni. Se l'elenco è "piccolo", qualsiasi soluzione precedente sarà sufficiente, a seconda delle esigenze.

Se l'elenco è "grande" e le prestazioni sono importanti, è necessario scorrere l'elenco e mantenere i 3 più grandi man mano che si procede.

Un altro compromesso è il tuo tempo e bug vs utilizzando le librerie. Uno degli approcci bibliografici menzionati funzionerà in meno del tempo del programmatore rispetto a una soluzione con codice personalizzato

Problemi correlati