2013-06-28 8 views
17

Mi chiedo se sia possibile ordinare un LinkedHashSet. Ho provato la dichiarazioneOrdinamento di LinkedHashSet

Collections.sort((List<Comparable> paragraph);

tuttavia, che solo genera un errore che non può essere colato in un elenco. C'è un modo per farlo, o dovrei usare un'altra struttura dati?

+6

Utilizzare invece un 'TreeSet'. –

+1

È possibile utilizzare SortedSet – Tala

+1

utilizzare invece un set ordinato, perché 'set' in una vista matematica non ha ordine – nachokk

risposta

25

È necessario utilizzare un come TreeSet o ConcurrentSkipListSet se si desidera ordinare in base al confronto (ad es., Ordine ordinato).

A LinkedHashSet conserva ordine basato su ordine di inserzione.

Se davvero si vuole utilizzare Collections.sort è possibile convertire i LHS in un Elenco per costruire effettivamente un List (anche se la questione non ci dice il tipo di paragraph quindi darò per scontato che è String)

List<String> listParagraph = new ArrayList<String>(paragraph); 
Collections.sort(listParagraph) 

ma questo probabilmente non è l'approccio migliore.

4

Collections.sort non funziona su Set s, solo su List s. Se è necessario ordinare i dati già presenti in un Set, è possibile prima aggiungerli in un List.

1

È possibile aggiungere l'oggetto LinkedHashSet (linkedHashSet) a TreeSet e verrà ordinato.

TreeSet<T> treeSet = new TreeSet<t>(); 
treeSet.addAll(linkedHashSet); 

treeSet è il set ordinato.

Nota che è necessario rendere questi tipi T confrontabili (implementando l'interfaccia di Comparatore).