2016-01-13 72 views
-1

我有一个我想处理的字节数组。我的目标是去除固定尺寸的图案。如何删除数组中的元素并缩小其大小?

我使用下面的代码:

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

你的标题应该是'在array',因为'List'是有点一个动态数组。为了做到这一点,你需要创建一个大小为“originalArray-1”的数组。之后,您可以使用'System.arrayCopy'将一个数组中的所有值复制到另一个数组中。 – SomeJavaGuy

+0

谢谢,我编辑了我的标题。确实创建一个新阵列是一个好主意。 –

回答

1

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

有办法绕过它,并且我建议使用链接列表数据结构的方法(不是java方法!)。这听起来很吓人,但在涉及到java时,YouTube上有很多帮助。

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

使用链接列表还可以让您将零添加到数据的末尾,并让您能够自由地操作数据中的内容而不必考虑大小。

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

祝你好运!

+0

谢谢你的帮助,我会检查链接的数据结构,然后他们似乎是我正在寻找的。 –

+0

试试这个链接!相当简单:https://www.youtube.com/watch?v=195KUinjBpU –

+0

谢谢,这就是我一直在寻找! –

0

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

相关问题