Java 使用comparator对列表进行排序不起作用

Java 使用comparator对列表进行排序不起作用,java,sorting,comparator,Java,Sorting,Comparator,我想根据轴类型计数对产品数据列表进行排序。我无法在下面的代码中找到问题。如何对该结果进行排序 private void sortResults(List<ProductData> results) { Collections.sort(results, new Comparator<ProductData>() { @Override public int compare(ProductData produc

我想根据轴类型计数对产品数据列表进行排序。我无法在下面的代码中找到问题。如何对该结果进行排序

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());
private void排序结果(列出结果){
Collections.sort(results,newcomparator(){
@凌驾
公共整数比较(ProductData product1、ProductData product2){
返回product1.getAxisTypeCount().compareTo(product2.getAxisTypeCount());
}
});}
ProductSearchPageData searchPageData=null;
searchPageData=encodeSearchPageData(productSearchFacade.textSearch(searchState,pageableData));
sortResults(searchPageData.getResults());
预期结果:
化妆37款,手表7款,珠宝6款,护肤6款,香水4款

实际效果:
化妆37款,香水4款,珠宝6款,护肤6款,手表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());
        }
    });}
将导致:

Fragrance   4
jewelry   6
skincare   6
Watches   7
Makeup   37
与您在实际结果中提到的不同
化妆37款、香水4款、珠宝6款、护肤6款、手表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());
        }
    });}
如果您想使用比较方法,则应按照预期结果中所述的结果输出:
化妆37、手表7、珠宝6、护肤6、香水4

此行
返回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());
        }
    });}
private void排序结果(列出结果){
Collections.sort(results,newcomparator(){
@凌驾
公共整数比较(ProductData product1、ProductData product2){
返回product2.getAxisTypeCount().compareTo(product1.getAxisTypeCount());
}
});}

getAxisTypeCount()返回什么?您发布的代码没有明显的错误。我想我们需要更多的信息和上下文。你能告诉我们ProductData的源代码吗?请提及getAxisTypeCount()方法中的代码!如前所述,代码似乎还可以。添加更多信息。如果你将实际输出与你的理论进行比较,你会发现这不是(唯一)问题。