我知道这不是一个新问题,但是我想按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中的多个键进行排序?
答案 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());