我一直在研究需要我通过三个属性对对象(软饮料)进行排序的东西 - name (str)colour (str)volume (int) 。我已经研究并找到了分别按名称、颜色和体积对它们进行排序的方法,但是有没有办法按所有三个排序它们?

我的意思是:例如,假设有四个 SoftDrink 对象:芬达橙 500、可乐红 500、可乐银 500 芬达橙 400。

我正在寻找的输出是:



首先按名称排序,然后是颜色,然后是音量(升序)。

我目前正在使用三个比较器: nameComparatorcolourComparatorvolumeComparator ,但它们中的每一个都仅按名称对对象进行排序,然后仅按颜色,然后仅按体积。是否可以使用 Comparator 根据多个属性进行排序?

最佳答案

尝试这样的事情:

drinks.sort(
      Comparator.comparing(Drink::getName).thenComparing(Drink::getColour).thenComparing(Drink::getVolume)
    );

请记住为您的属性( getNamegetColour 等)设置 setter/getter 。这就是你所需要的,不需要任何自定义比较器或任何东西。

关于java - 按多个属性对对象进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39571766/

10-14 12:39
查看更多