[英]Sorting on list using comparator is not working
我想根據軸類型計數對產品數據列表進行排序。我無法在以下代碼中找到問題。 我該如何對結果進行排序?
private void sortResults(List<ProductData> results) {
Collections.sort(results, new Comparator<ProductData>() {
@Override
public int compare(ProductData product1, ProductData product2) {
return product1.getAxisTypeCount().compareTo(product2.getAxisTypeCount());
}
});}
ProductSearchPageData<SearchStateData, ProductData> searchPageData = null;
searchPageData = encodeSearchPageData(productSearchFacade.textSearch(searchState, pageableData));
sortResults(searchPageData.getResults());
預期結果: Makeup 37 , Watches 7 , jewelry 6 , skincare 6, Fragrance 4
實際結果: Makeup 37 , Fragrance 4 , jewelry 6 , skincare 6,Watches 7
private void sortResults(List<ProductData> results) {
Collections.sort(results, new Comparator<ProductData>() {
@Override
public int compare(ProductData product1, ProductData product2) {
return product1.getAxisTypeCount().compareTo(product2.getAxisTypeCount());
}
});}
product1從列表中獲取第二個值,而product2從列表中獲取第一個值。 例如:
您的清單為[Watches , jewelry, Fragrance, .........]
調用比較功能時product1 = jewelry
和product2 = Watches
我假設getAxisTypeCount()給出整數值,如果您的對象是“ Makeup 37”,則getAxisTypeCount()將返回37
這行=>
return product1.getAxisTypeCount().compareTo(product2.getAxisTypeCount());
將導致:
Fragrance 4
jewelry 6
skincare 6
Watches 7
Makeup 37
不像您在實際結果中提到的Makeup 37 , Fragrance 4 , jewelry 6 , skincare 6, Watches 7
如果您希望比較方法應按預期結果輸出結果: Makeup 37 , Watches 7 , jewelry 6 , skincare 6, Fragrance 4
此行return product2.getAxisTypeCount().compareTo(product1.getAxisTypeCount())
將解決您的問題。
private void sortResults(List<ProductData> results) {
Collections.sort(results, new Comparator<ProductData>() {
@Override
public int compare(ProductData product1, ProductData product2) {
return product2.getAxisTypeCount().compareTo(product1.getAxisTypeCount());
}
});}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.