按多个属性对对象排序

Pau*_*596 3 java

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

我的意思是:例如,假设有四个SoftDrink对象:Fanta Orange 500,Coke Red 500,Coke Silver 500 Fanta Orange 400.

我正在寻找的输出将是:

  • 1)可乐红500
  • 2)可乐银500
  • 3)芬达橙400
  • 4)芬达橙500

首先按名称排序,然后按颜色排序,然后按体积(升序)排序.

我现在使用三个比较器:nameComparator,colourComparatorvolumeComparator,但是每个比较器只按名称排序对象,然后仅按颜色排序,然后按体积排序.是否可以使用Comparator根据多个属性进行排序?

Sha*_*dov 12

尝试这样的事情:

drinks.sort(
      Comparator.comparing(Drink::getName).thenComparing(Drink::getColour).thenComparing(Drink::getVolume)
    );
Run Code Online (Sandbox Code Playgroud)

记得有干将为您的属性(getName,getColour等等).这就是您所需要的,无需任何自定义比较器或任何东西.

  • 最后一个类型是`int`,所以你可以使用`thenComparingInt`来避免一些拳击. (3认同)