如何通过多个属性对java8对象列表进行排序

时间:2019-02-08 10:25:00

标签: java java-8

我知道这不是一个新问题,但是我想按java8中首选的列对CSV文件进行排序。

CSV的数据结构为List<List<CsvEntity>,我需要首先按CsvEntity的一个字段进行排序,然后按其他(并非必须)示例进行排序:firstName然后按lastName。 / p>

class CsvEntity{
   private String firstName
   private String lastName
   private String address
}

此之后-How to sort data in a CSV file using a particular field in Java?

我需要进行哪些修改以支持对Java8中的多个键进行排序?

2 个答案:

答案 0 :(得分:2)

仅使用比较器,一个按firstName然后按lastName排序的示例

list.forEach(l -> l.sort(Comparator.comparing(CsvEntity::getFirstName)
                               .thenComparing(CsvEntity::getLastName)));

当然,您必须为字段使用getter才能使用方法引用

答案 1 :(得分:0)

        final Function<CsvEntity, String> byfirstName = CsvEntity -> CsvEntity.getfirstname();
        final Function<CsvEntity, String> bylastname = CsvEntity -> CsvEntity.getlastname();
        final Function<CsvEntity, String> byaddress = CsvEntity -> CsvEntity.getaddress(); 
        System.out.println("Sorted in ascending order by Firstname and Lastname: ");
        List<CsvEntity> sortedlist =   CsvEntity.stream()
            .sorted(Comparator.comparing(byfirstName).thenComparing(bylastname))
            .collect(Collectors.toList());