2016-01-13 74 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實現。

相關問題