簡體   English   中英

使用比較器對列表進行排序不起作用

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM