栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java:将long型数组有效转换为字节型数组

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java:将long型数组有效转换为字节型数组

关于效率,事实上,许多细节几乎没有什么不同。硬盘是目前为止涉及到的最慢的部分,在将单个字节写入磁盘所需的时间中,您可能已经将数千甚至数百万个字节转换为long。每一个性能测试在这里不会告诉你有关的任何性能
执行 ,但对性能 的硬盘 。毫无疑问,应该制定专门的基准,分别比较不同的转换策略和不同的书写方式。

假设主要目标是一种允许方便转换且不会造成不必要开销的功能,我想提出以下方法:

可以创建一个

ByteBuffer
足够大的尺寸,将其视为a
LongBuffer
,然后使用bulk
LongBuffer#put(long[])
方法(该方法负责必要的字节序转换,并尽可能高效地执行此操作),最后,编写原始文件
ByteBuffer
(现已填充)使用
long
值)到文件
FileChannel

遵循这个想法,我认为这种方法很方便并且(很可能)相当有效:

private static void bulkAndChannel(String fileName, long longArray[]) {    ByteBuffer bytes =         ByteBuffer.allocate(longArray.length * Long.BYTES);    bytes.order(ByteOrder.nativeOrder()).asLongBuffer().put(longArray);    try (FileOutputStream fos = new FileOutputStream(fileName))    {        fos.getChannel().write(bytes);    }    catch (IOException e)    {        e.printStackTrace();    }}

(当然,人们可能会争论分配“大”缓冲区是否是最好的主意。但是,由于有了

Buffer
类的便利方法,可以很容易地并通过合理的努力对其进行修改,以写入适当大小的数据“块”。
,对于一个人真的想写一个 巨大的 数组,而创建相应数组的内存开销却实在
ByteBuffer
太大了)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/419559.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号