加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何处理大量的浮点数据?

发布时间:2020-12-15 08:40:15 所属栏目:Java 来源:网络整理
导读:我们有一个包含大量浮点数据(大约80MB)的二进制文件.我们需要在 Java应用程序中处理它.数据来自医疗扫描仪.一个文件包含一个Rotation的数据.一个旋转包含960个视图.一个视图包含16行,一行包含1344个单元格.这些数字(他们的关系)是固定的. 我们需要将所有浮点
我们有一个包含大量浮点数据(大约80MB)的二进制文件.我们需要在 Java应用程序中处理它.数据来自医疗扫描仪.一个文件包含一个Rotation的数据.一个旋转包含960个视图.一个视图包含16行,一行包含1344个单元格.这些数字(他们的关系)是固定的.

我们需要将所有浮点数读入我们的应用程序,其代码结构反映了关于Rotation-view-row-cell的上述结构.

我们现在正在做的是使用float []来保存Cells的数据,然后使用ArrayList for Rotation,View和Row来保存它们的数据.

我有两个问题:

>如何快速填充Cell数据(将浮点数读入浮点数[])?
>你有更好的想法来保存这些数据吗?

解决方法

对于数据加载:

DataInputStream应该可以正常工作.但请确保将基础FileInputStream包装在BufferedInputStream中,否则您将面临为每个可能会降低性能的浮动执行I / O操作的风险.

保存数据的几个选项:

>(非常简单地)最节省内存的方法是将整个数组存储在大型float []上,并根据需要计算偏移量.使用起来有点难看,但如果您在整个集合中进行大量计算或处理循环,则可能有意义.>最“OOP”的方式是为Rotation,View,Row和Cell提供单独的对象.但是将每个单元作为一个单独的对象是非常浪费的,甚至可能会打破你的内存限制.>您可以使用嵌套的ArrayLists和float [1344]来表示每行中单元格的最低级别数据.我明白这就是你现在正在做的事情 – 事实上我觉得这是一个不错的选择.与整体数据大小相比,ArrayLists的开销不会太大.>最后一个选项是使用float [rotationNum] [rowNum] [cellNum]来表示每个旋转.比ArrayLists更有效,但数组操作通常不太好.但是,如果正如您所说,数组大小将始终固定,这似乎是一个非常好的选择.我可能自己选择这个选项.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读