ByteBuffer拷贝效率问题(80分相送)

huaya1127 2007-09-25 11:09:09
大家好,以下是我的一段拷贝ByteBuffer的代码,功能为从msgBuffer中拷贝abc开头d结尾部分的数据到swapBuffer中,一直拷贝到没有为止,功能虽然实现了,但小弟感觉如此处理效率不是很高,当中用了很多的get,put方法比较了Bytebuffer中的没个字节,各位前辈们实际中是否有批量处理的方法,或者其他方面可以提高程序的处理效率????小弟在此谢过了。

private boolean SwapBuffer() {
int roundcount =0;
try{
while(msgBuffer.position()<msgBuffer.limit()){
byte srcByte = msgBuffer.get();
if((char)srcByte =='a'){
srcByte = msgBuffer.get();
if((char)srcByte =='b'){
srcByte = msgBuffer.get();
if((char)srcByte =='c'){
ByteBuffer swapBuffer = ByteBuffer.allocate(10240);
StringBuffer buffer = new StringBuffer();
swapBuffer.put((byte)'a');
buffer.append('a');

swapBuffer.put((byte)'b');
buffer.append('b');

swapBuffer.put(srcByte);
buffer.append((char)srcByte);
srcByte = msgBuffer.get();
while((msgBuffer.position()<msgBuffer.limit())
&&((char)srcByte!='d')){
swapBuffer.put(srcByte);
buffer.append((char)srcByte);
srcByte = msgBuffer.get();
}
if((char)srcByte=='d'){
swapBuffer.put(srcByte);
buffer.append((char)srcByte);
swapBuffer.flip();

System.out.println("Operation finished.");
}
}
}
}
}
}catch(Exception e){
return false;
}
return true;
}
...全文
728 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sealed 2007-09-26
  • 打赏
  • 举报
回复
路过 顶个
wshsm 2007-09-25
  • 打赏
  • 举报
回复
效率不是很低吧?没问题呀,不过如果没有d怎么办?
zhmt 2007-09-25
  • 打赏
  • 举报
回复
基本就这样了
还能高到哪去

不如直接找到开始和结束的位置,然后用System。arrayCopy不就完了
yydrewdrew 2007-09-25
  • 打赏
  • 举报
回复
效率不低啊
wshsm 2007-09-25
  • 打赏
  • 举报
回复
对,的确存在这个问题,稍微改改逻辑
zephyr_cc 2007-09-25
  • 打赏
  • 举报
回复
你的处理好像有点问题,像这样的 aabc1231d
会被忽略
zjf405 2007-09-25
  • 打赏
  • 举报
回复
LZ要挑战sun吗

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧