如何删除数组中的元素并减小其大小?
How to delete elements in an array an reduce its size?
我有一个要处理的字节数组。我的目标是删除固定大小的图案。
我正在使用以下代码:
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;
如您所见,我在字节数组的末尾添加了零。我实际上更愿意减少数组的大小。我该怎么做?
除了创建新数组外,您不能减少数组的大小,因为它的大小是最终的。根据您的目的尝试任何 java.util.List 实施。
很抱歉,这可能不是您想听到的,但在 java 中,数组在技术上是固定的,不能直接更改大小。
有很多解决方法,我建议的方法(不是 java 方法!)是使用链表数据结构。这听起来很吓人,但在 java 方面,YouTube 上提供了大量帮助。
简而言之,这是一种让您以任意顺序将 "item types" 连接在一起的方法。一个项目要么在一个项目的前面,要么在另一个项目的后面,所以在这个意义上它类似于一个数组。
使用链接列表还可以让您在数据末尾添加零,并让您可以自由地操作数据中的内容而无需担心大小。
我真的希望这有帮助,如果帮助不大,我很抱歉。在一条评论中教授数据结构不是一件容易的事,哈哈!
祝你好运!
你只能用 Arraylist