gpt4 book ai didi

java - 有没有一种简单的方法可以解析具有 4 列的文本文件,以对具有匹配的第一个值的值进行求和/平均值?

转载 作者:行者123 更新时间:2023-12-02 10:00:30 26 4
gpt4 key购买 nike

我有一个文本文件,我已删除了无关数据,只剩下 4 列。第一个充当州标识符,接下来的三个中的每一个都包含有关该州人口的一些数字信息

这是我第一次使用IO/文件解析,我似乎无法组合出一个解决方案来确定哪些行具有相同的状态标识符,然后将第 2 列的值相加, 3 和 4。

输入示例:

01   123   456   789
01 456 789 012

等等

我希望看到它成为输出的示例:

01 579 1245 801

我尝试逐行将输入文件的内容拆分字符串数组,然后Integer.parseInt()将我的字符串内容转换为整数。

最近刚刚尝试组合一个while循环来缓慢循环我的数据,目的是创建该行上的值的数组,以便我可以存储它们用于执行我的求和/平均值

int stateCode = 01;
while (stateCode <= 56) {
if (line.startsWith(Integer.toString(stateCode))) {
System.out.println(stateCode);
String[] stringValues = line.split(" ");
for (int i = 0; + i < stringValues.length; i++) {
System.out.println(stringValues[i]);
}
}
stateCode++;
}

上面描述了我想看到的内容!我真的觉得我离这件事越来越近了,但很想看看其他人可能会考虑使用什么样的解决方案。感谢大家的意见!

最佳答案

我会给你一个大概的思路,这可能会方便你的工作。

01 123 456 789

这一行可以表示为 Entry<Integer, IntSummaryStatistics> ,键是状态代码,值是有关该状态的统计信息。

Integer stateCode = Integer.valueOf(line.substring(0, line.indexOf(' ')));
IntSummaryStatistics statistics = Arrays.stream(line.substring(line.indexOf(' ')).split(" "))
.filter(s -> !s.isEmpty())
.mapToInt(Integer::valueOf)
.summaryStatistics();

有了这两个值,您可以形成一个记录并将其放入 Map 中。

map.put(stateCode, statistics);

您继续处理下一个元素,并检查正在处理的状态的统计信息是否已计算。如果是这样,您计算一个新的,并将两者合并。

map.compute(stateCode, (key, oldValue) -> {
if (oldValue == null) {
return statistics;
}
oldValue.combine(statistics);
return oldValue;
});

关于java - 有没有一种简单的方法可以解析具有 4 列的文本文件,以对具有匹配的第一个值的值进行求和/平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55668753/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com