BeanRelEstatisticaMateriaPrima

BeanRelEstatisticaMateriaPrima

早上好!

我正在尝试按两个字段比较列表,但结果不起作用,您能帮我吗?

我有一个示例列表:

Name - MesesDuracao - Buy
A    - 1            - 10
A    - 2            - 5
B    - 1            - 8


我希望订购看起来像这样:

A-1-10
B-1-8
A-2-5


我正在尝试这样:

Collections.sort (testImportados, new Comparator <BeanRelEstatisticaMateriaPrima> () {
    @Override
    public int compare (BeanRelEstatisticaMateriaPrima p1, BeanRelEstatisticaMateriaPrima p2)
    {

        int comparison = p1.getMesesduration (). compareTo (p2.getMesesduration ());
        return comparison == 0? p1.getQtyBuy (). compareTo (p2.getQtyBuy ()): comparison;

    }
});


但是,它仅按“ getMesesduration()”进行排序,而不按购买数量进行排序。

有什么建议吗?

谢谢

最佳答案

 Collections.sort(
     testImportados,
     Comparator.comparing(BeanRelEstatisticaMateriaPrima::getMesesduration)
                     .thenComparing(BeanRelEstatisticaMateriaPrima::getQtyBuy));


如果已经使用了Java-8,应该是提供正确的Comparator的最简单方法。

关于java - 如何对具有两个对象字段的列表进行排序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52679303/

10-13 04:22