我一直在研究需要我通过三个属性对对象(软饮料)进行排序的东西 - name (str)
、 colour (str)
和 volume (int)
。我已经研究并找到了分别按名称、颜色和体积对它们进行排序的方法,但是有没有办法按所有三个排序它们?
我的意思是:例如,假设有四个 SoftDrink 对象:芬达橙 500、可乐红 500、可乐银 500 芬达橙 400。
我正在寻找的输出是:
首先按名称排序,然后是颜色,然后是音量(升序)。
我目前正在使用三个比较器: nameComparator
、 colourComparator
和 volumeComparator
,但它们中的每一个都仅按名称对对象进行排序,然后仅按颜色,然后仅按体积。是否可以使用 Comparator 根据多个属性进行排序?
最佳答案
尝试这样的事情:
drinks.sort(
Comparator.comparing(Drink::getName).thenComparing(Drink::getColour).thenComparing(Drink::getVolume)
);
请记住为您的属性(
getName
、 getColour
等)设置 setter/getter 。这就是你所需要的,不需要任何自定义比较器或任何东西。关于java - 按多个属性对对象进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39571766/