[英]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.