Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与比较仪的使用作斗争_Java_Comparator - Fatal编程技术网

Java 与比较仪的使用作斗争

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

案例:我有一个对象的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());
                     }
                  });
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进行排序