例如,假設我想從陣列中刪除0的所有連續段超過3個字節的Java:從字節數組中刪除零continious段
byte a[] = {1,2,3,0,1,2,3,0,0,0,0,4};
byte r[] = magic(a);
System.out.println(r);
結果
{1,2,3,0,1,2,3,4}
我不再想要在Java中執行類似於正則表達式的操作,但要使用字節數組而不是字符串。
有什麼可以幫助我內置(或有一個很好的第三方工具),還是我需要從頭開始工作?
字符串是UTF-16,所以來回轉換不是一個好主意嗎?至少它有很多浪費的開銷......對吧?
如何關鍵的是性能和內存使用爲您的使用情況?一般來說,RAM很便宜,而且CPU速度很快。你真的發現了一個瓶頸,還是擔心效率?您可以通過使用8位編碼將字節[]轉換爲字符串來輕鬆地進行測試,執行重新編程並檢查性能。畢竟,我們並不擔心在ANSI環境中正常使用效率低下的16位字符串Java字符串,對嗎? – 2009-09-07 00:00:59
這是一個高性能的應用程序,我比ram的使用更擔心週期。 – Mike 2009-09-07 00:02:41
這仍然值得標杆; Hotspot虛擬機會將熱點中的代碼轉換爲機器代碼,它將以與8位數據相同的速度處理16位數據,因爲它全部適合32位機器字。即使你發現它太慢,你也不會花太多時間找出它。 – 2009-09-07 00:08:05