我有一个我要处理的字节数组。我的目标是删除固定大小的模式。
我使用以下代码:
byte buffer[] = {1,2,3,4,5,6,7,8,9,10};
int position; // position of the patern in the stream
int length = buffer.length();
int pattern_size = 64; // size of the patern to delete
for(i = position; i<length; i++){
// Shift the bytes
buffer[i] = buffer[i+pattern_size];
}
for(i = length; i>=(length-pattern_size); i--){
// Adding 0s at the end to make up for the loss of data
buffer[i]=0;
}
data_removed = data_removed + pattern_size;
正如您所看到的,我在字节数组的末尾添加了零。我实际上更愿意减少数组的大小。我怎么能这样做?
答案 0 :(得分:1)
对不起,这可能不是你想听到的,但在java中,数组在技术上是固定的,大小不能直接改变。
有很多方法,我建议的方法(不是java方法!)将使用链表数据结构。这听起来令人生畏,但在涉及到Java时,YouTube上有很多帮助。
简而言之,这是一种让您以任何顺序将“项目类型”连接在一起的方式。一个项目在项目前面或在另一个项目后面,因此它在这个意义上类似于数组。
使用链接列表还允许您在数据末尾添加零,并且您可以自由地操作数据中的内容而无需考虑大小。
我真的希望这会有所帮助,如果不是很多,我很抱歉。在单个评论中教授数据结构并不是一件容易的事,哈哈!
祝你好运!
答案 1 :(得分:0)
除了创建新数组之外,你不能减小数组的大小,因为它的大小是最终的。为您的目的尝试任何java.util.List实现。
答案 2 :(得分:0)
您只能使用Arraylist
执行此操作