例如,假设我想从阵列中删除0的所有连续段超过3个字节的Java:从字节数组中删除零continious段
byte a[] = {1,2,3,0,1,2,3,0,0,0,0,4};
byte r[] = magic(a);
System.out.println(r);
结果
{1,2,3,0,1,2,3,4}
我不再想要在Java中执行类似于正则表达式的操作,但要使用字节数组而不是字符串。
有什么可以帮助我内置(或有一个很好的第三方工具),还是我需要从头开始工作?
字符串是UTF-16,所以来回转换不是一个好主意吗?至少它有很多浪费的开销......对吧?
如何关键的是性能和内存使用为您的使用情况?一般来说,RAM很便宜,而且CPU速度很快。你真的发现了一个瓶颈,还是担心效率?您可以通过使用8位编码将字节[]转换为字符串来轻松地进行测试,执行重新编程并检查性能。毕竟,我们并不担心在ANSI环境中正常使用效率低下的16位字符串Java字符串,对吗? – 2009-09-07 00:00:59
这是一个高性能的应用程序,我比ram的使用更担心周期。 – Mike 2009-09-07 00:02:41
这仍然值得标杆; Hotspot虚拟机会将热点中的代码转换为机器代码,它将以与8位数据相同的速度处理16位数据,因为它全部适合32位机器字。即使你发现它太慢,你也不会花太多时间找出它。 – 2009-09-07 00:08:05