首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Apache Common CSV with functional style对数据进行分组和求和?

如何使用Apache Common CSV with functional style对数据进行分组和求和?
EN

Stack Overflow用户
提问于 2021-10-27 14:30:42
回答 1查看 50关注 0票数 0

下面附加的屏幕截图是数据集的输出。这是我的作业,我被要求根据函数式编程风格进行所有的编码。我尝试过使用Java Stream和map来解析日期,但我不知道如何按月和周对它们进行分组,然后对数据求和。

Data Set Example

下面是我的代码:

这是读取文件并将数据存储到arraylist中的函数

代码语言:javascript
运行
复制
public ArrayList<List<String>> csvParser(String CSVFileName) throws IOException {
        CSVParser csvParser = CSVParser.parse(Paths.get(CSVFileName), Charset.defaultCharset(), CSVFormat.DEFAULT);
        return csvParser
                .stream()
                .map(i->i.toList())
                .collect(Collectors.toCollection(ArrayList::new));
    }

此函数用于检索数据集的列并解析日期

代码语言:javascript
运行
复制
public List<String> parseRetrievedDateList(List<String> dateToBeParsedList){
        return dateToBeParsedList.stream()
                .map(l-> {
                    return LocalDate.parse(l,DateTimeFormatter.ofPattern("M/d/yy")).format(DateTimeFormatter.ofPattern("yyyy/M/d"));
                })
                .collect(Collectors.toList());
    }
EN

回答 1

Stack Overflow用户

发布于 2021-10-27 14:41:19

如果我理解正确的话,一种选择是使用.collect(Collectors.groupingBy(...) Java Doc

例如,在您的示例中(猜测代码的其余部分),您可以执行以下操作:

代码语言:javascript
运行
复制
parser
   .stream() // stream of csv rows
   .collect(Collectors.groupingBy(CsvRow::getMonth);

这将根据该月份的行列表返回一个月(不管是哪种类型)的映射。

希望这能给你一些指导。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69740562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档