情况:我有一个对象的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());
}
});