2010-09-14 10 views
0

application My Book rassemble une collection de Book objets à l'aide lookups contre différents Merchant objets:Comment trier un "Book" ArrayList sans SQL?

List<Book> books = new ArrayList<Book>(); 
for (Merchant merchant : merchants) 
{ 
    books.addAll(getBooksForMerchant(merchantName); 
} 

Il doit trier la liste sur la base d'une liste déroulante:

<select class="sortByDropdown" name="sort"> 
<option value="lowPrice">Price: Low to High</option> 
<option value="highPrice">Price: High to Low</option> 
<option value="reviewRank">Avg. Customer Review</option> 
</select> 

Étant donné que Book a une propriété price et une propriété reviewRank, comment puis-je trier le ArrayList de livres dans Java avant de l'afficher à l'utilisateur dans l'ordre qu'ils ont demandé?

+1

En relation: http://stackoverflow.com/questions/1814095/sorting-an-arraylist-of-contacts – BalusC

Répondre

4

Procédez de la même manière que pour trier une liste. Implémentez un Comparator et appelez le Collections.sort(list, comparator). Si vous disposez de 3 méthodes de tri différentes, vous devrez peut-être créer 3 implémentations, ou une seule que vous pouvez contrôler pour trier 3 manières.

+0

Un seul comparateur suffit. Il est seulement important de comparer les 3 conditions dans le bon ordre. –

0

Presque exactement la même question a été demandé yesterday:

Réponse courte, selon la souplesse de votre solution doit être, vous pouvez écrire un Comparator, ou écrire plusieurs et composer les ensemble pour les besoins de tri complexes.

0

Ordering est idéal pour ce genre de choses. Ordering.compound() vous permet de chaîner les options exactement comme vous l'avez décrit.