减法java_Java值减少的减法

该代码段展示了一个内存高效的Java方法,用于解析包含时间、a值和x值的数据文件。它逐行读取文件,跳过可能存在的头行,并确保在添加到结果列表之前,a和x值都被正确初始化。此实现避免了加载整个文件到内存,适用于大文件处理。
摘要由CSDN通过智能技术生成

现在,我发现你没有使用数据库,只是从文件中读取,也许试试这个

只需保留 a 的旧值,直到新值可以覆盖它 . 这是内存高效的,因为它逐行解析 .

public static List parseFile(String myFile) throws IOException {

List results = new ArrayList<>();

try (BufferedReader b = new BufferedReader(new FileReader(myFile));) {

b.readLine(); // ** skip header?

String line;

Integer time = null;

Double a = null;

Double x = null;

for (int lineNum = 0; (line = b.readLine()) != null; lineNum++) {

// ** split the data on any-and-all-whitespace

final String[] data = line.split("\\s+");

if (data.length != 3)

throw new RuntimeException("Invalid data format on line " + lineNum);

try {

time = Integer.valueOf(data[0]);

if (!data[1].trim().isEmpty()) {

a = Double.valueOf(data[1]);

}

if (!data[2].trim().isEmpty()) {

x = Double.valueOf(data[2]);

}

} catch (Exception e) {

throw new RuntimeException("Couldn't parse line " + lineNum, e);

}

if (a == null || x == null) {

throw new RuntimeException("Values not initialized at line " + lineNum);

}

results.add(Double.valueOf(a.doubleValue() - x.doubleValue()));

}

}

// ** finished parsing file, return results

return results;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值