情况:我有一个对象的ArrayList,它具有以下打印方法:

public void printAllItems()
{
    if(itemsList.isEmpty())
    {
        System.out.println("The list is empty");
    }
    else
    {
        System.out.println("Number of items: " + itemCount);
        for(ShopItem shopItem : itemsList)
        {
            shopItem.printDetails();
            System.out.println();   // empty line between posts
        }
    }
}


现在,我想按对象的字段之一(itemName,当然还有合适的getItemName()方法)按字母顺序对它们进行排序。我浏览了Java文档,发现应该使用Comparator。问题是我实际上并不了解如何将比较器代码实现到for循环中。有什么建议 ?

附言很抱歉,如果这个问题看起来很简单,但我还是个初学者,我很容易感到困惑:(

最佳答案

考虑到getItemName()返回一个字符串,请将其添加到循环之前:

Collections.sort(itemsList, new Comparator<ShopItem>(){
                     public int compare(ShopItem i1, ShopItem i2){
                         if(i1 == null || i2 == null)
                              return 0; //do properly nullable handling
                         return i1.getItemName().compareTo(i2.getItemName());
                     }
                  });

09-11 10:45