如何删除数组中的元素减小其大小?

时间:2016-01-13 16:08:32

标签: java arrays reduce shift

我有一个我要处理的字节数组。我的目标是删除固定大小的模式。

我使用以下代码:

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; 

正如您所看到的,我在字节数组的末尾添加了零。我实际上更愿意减少数组的大小。我怎么能这样做?

3 个答案:

答案 0 :(得分:1)

对不起,这可能不是你想听到的,但在java中,数组在技术上是固定的,大小不能直接改变。

有很多方法,我建议的方法(不是java方法!)将使用链表数据结构。这听起来令人生畏,但在涉及到Java时,YouTube上有很多帮助。

简而言之,这是一种让您以任何顺序将“项目类型”连接在一起的方式。一个项目在项目前面或在另一个项目后面,因此它在这个意义上类似于数组。

使用链接列表还允许您在数据末尾添加零,并且您可以自由地操作数据中的内容而无需考虑大小。

我真的希望这会有所帮助,如果不是很多,我很抱歉。在单个评论中教授数据结构并不是一件容易的事,哈哈!

祝你好运!

答案 1 :(得分:0)

除了创建新数组之外,你不能减小数组的大小,因为它的大小是最终的。为您的目的尝试任何java.util.List实现。

答案 2 :(得分:0)

您只能使用Arraylist

执行此操作