使用Java 8和流处理csv数据

问题描述 投票:-1回答:1

我正在学习Java 8,我正在尝试处理Java中的csv文件;

List<Catalogo> catalogos = new ArrayList<>();
    try (Stream<String> lines = Files.lines(Paths.get("src\\main\\resources\\productos.csv"), Charset.forName("Cp1252"))) {
        List<String[]> data = lines.map(s -> s.split(","))
                .collect(Collectors.toList());
        createCatalog(catalogos, data);
        catalogos.forEach(System.out::println);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

public static void createCatalog(List<Catalogo> catalogos, List<String[]> data) {
    for (String[] x : data) {
        for (int i = 0; i < x.length; i++) {
            Catalogo catalogo = new Catalogo();
            catalogo.setCodigo(x[0]);
            catalogo.setProducto(x[1]);
            catalogo.setTipo(x[2]);
            catalogo.setPrecio(x[3]);
            catalogo.setInventario(x[4]);
            catalogos.add(catalogo);
        }
    }
}

我想知道是否有可能改进此代码,我不喜欢这样做的方式;

java java-8 stream
1个回答
0
投票

您可以使用接受所有属性的构造函数直接映射到您的对象,例如:

© www.soinside.com 2019 - 2024. All rights reserved.