Java 与比较仪的使用作斗争
案例:我有一个对象的ArrayList,它具有以下打印方法:Java 与比较仪的使用作斗争,java,comparator,Java,Comparator,案例:我有一个对象的ArrayList,它具有以下打印方法: public void printAllItems() { if(itemsList.isEmpty()) { System.out.println("The list is empty"); } else { System.out.println("Number of items: " + itemCount); for(ShopItem sho
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());
}
});
Collections.sort(itemsList,newcomparator(){
公共整数比较(ShopItem i1、ShopItem i2){
如果(i1==null | | i2==null)
返回0;//正确执行可为空的处理
返回i1.getItemName().compareTo(i2.getItemName());
}
});
考虑到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());
}
});
Collections.sort(itemsList,newcomparator(){
公共整数比较(ShopItem i1、ShopItem i2){
如果(i1==null | | i2==null)
返回0;//正确执行可为空的处理
返回i1.getItemName().compareTo(i2.getItemName());
}
});
考虑到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());
}
});
Collections.sort(itemsList,newcomparator(){
公共整数比较(ShopItem i1、ShopItem i2){
如果(i1==null | | i2==null)
返回0;//正确执行可为空的处理
返回i1.getItemName().compareTo(i2.getItemName());
}
});
考虑到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());
}
});
Collections.sort(itemsList,newcomparator(){
公共整数比较(ShopItem i1、ShopItem i2){
如果(i1==null | | i2==null)
返回0;//正确执行可为空的处理
返回i1.getItemName().compareTo(i2.getItemName());
}
});
打印收藏之前,您可以执行以下操作:
Collections.sort(itemsList, new Comparator<ShopItem>() {
public int compare(ShopItem i1, ShopItem i2) {
return i1.getItemName().compareTo(i2.getItemName());
}
});
Collections.sort(itemsList,newcomparator(){
公共整数比较(ShopItem i1、ShopItem i2){
返回i1.getItemName().compareTo(i2.getItemName());
}
});
这里我使用的是
比较器接口的匿名实现。在打印集合之前,您可以执行以下操作:
Collections.sort(itemsList, new Comparator<ShopItem>() {
public int compare(ShopItem i1, ShopItem i2) {
return i1.getItemName().compareTo(i2.getItemName());
}
});
Collections.sort(itemsList,newcomparator(){
公共整数比较(ShopItem i1、ShopItem i2){
返回i1.getItemName().compareTo(i2.getItemName());
}
});
这里我使用的是比较器接口的匿名实现。在打印集合之前,您可以执行以下操作:
Collections.sort(itemsList, new Comparator<ShopItem>() {
public int compare(ShopItem i1, ShopItem i2) {
return i1.getItemName().compareTo(i2.getItemName());
}
});
Collections.sort(itemsList,newcomparator(){
公共整数比较(ShopItem i1、ShopItem i2){
返回i1.getItemName().compareTo(i2.getItemName());
}
});
这里我使用的是比较器接口的匿名实现。在打印集合之前,您可以执行以下操作:
Collections.sort(itemsList, new Comparator<ShopItem>() {
public int compare(ShopItem i1, ShopItem i2) {
return i1.getItemName().compareTo(i2.getItemName());
}
});
Collections.sort(itemsList,newcomparator(){
公共整数比较(ShopItem i1、ShopItem i2){
返回i1.getItemName().compareTo(i2.getItemName());
}
});
这里我使用的是Comparator
接口的匿名实现。您需要创建一个实现Comparator
的类(或一个匿名类)。文档中对此进行了详细的解释
这是公认答案中描述的方法
我仍然想发布Java 8方法:
itemsList
.stream()
.sorted(Comparator.comparing(ShopItem::getItemName))
.forEach(item -> {
item.printDetails();
System.out.println();
});
您需要创建一个实现Comparator
(或匿名类)的类。文档中对此进行了详细解释
这是公认答案中描述的方法
我仍然想发布Java 8方法:
itemsList
.stream()
.sorted(Comparator.comparing(ShopItem::getItemName))
.forEach(item -> {
item.printDetails();
System.out.println();
});
您需要创建一个实现Comparator
(或匿名类)的类。文档中对此进行了详细解释
这是公认答案中描述的方法
我仍然想发布Java 8方法:
itemsList
.stream()
.sorted(Comparator.comparing(ShopItem::getItemName))
.forEach(item -> {
item.printDetails();
System.out.println();
});
您需要创建一个实现Comparator
(或匿名类)的类。文档中对此进行了详细解释
这是公认答案中描述的方法
我仍然想发布Java 8方法:
itemsList
.stream()
.sorted(Comparator.comparing(ShopItem::getItemName))
.forEach(item -> {
item.printDetails();
System.out.println();
});
你不会把比较器放在for循环中,它会放在它前面。而且我认为你可以只做shopItem.Sort(itemName)
你不会用for
循环来实现它;你首先对集合进行排序(使用for
循环,然后迭代)。检查一下,它有很多例子。你不会把比较器放在for循环中,它会放在它前面。另外,我认为你可以只做shopItem。Sort(itemName)
你不会用for
循环来实现它;你首先对集合进行排序(使用for
循环),然后进行迭代(使用for
循环)。检查一下,它有很多例子。你不会把比较器放在for循环中,它会放在它前面。另外,我认为你可以只做shopItem。Sort(itemName)
你不会用for
循环来实现它;你首先对集合进行排序(使用for
循环),然后进行迭代(使用for
循环)。检查一下,它有很多例子。你不会把比较器放在for循环中,它会在它前面。另外,我认为你可以只做shopItem。Sort(itemName)
你不会用for
循环实现它;你可以对collect进行排序