使用String.getBytes(Charset ch)
,分配一個新的緩衝區,實際上它返回一個byte[]
。有沒有辦法避免這種情況?我想有一個可重用的字節數組,並在此緩衝區中編碼字符串。如何避免與String.getBytes(Charset ch)相關的開銷
回答
您可以直接使用Charset
和CharsetEncoder
API,特別是調用encode(CharBuffer, ByteBuffer, boolean)
。但是,我不希望它最終成爲特別令人愉快的代碼。
如果你像我一樣不掌握ByteBuffer,爲了補充Jon的回答,你也可以創建自己的包裝你的字節數組的OutputStream實現,並使用OutputStreamWriter
將字符串寫入這個自定義OutputStream
。
您可以使用
getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
//Copies characters from this string into the destination character array.
,並自行管理陣列。
這不會做任何編碼 - 這是複製周圍的*字符*。 – 2012-02-22 20:15:33
我認爲這已被棄用,但它寫入char [],而不是byte [],所以根本沒有編碼。 – gotch4 2012-02-22 20:16:28
具有相同參數的'getBytes'已棄用。 'getChars'不是。但是,我忘記了編碼部分... – 2012-02-23 09:43:15
- 1. 避免編譯開銷
- 2. 避免C#JIT開銷
- 3. 避免與ASP.NET GridView相關的回發
- 4. Eclipse - 避免與包相關的通知
- 5. 避免開關塊
- 6. 如何避免300箱的開關塊?
- 7. 如何避免嵌套開關結構?
- 8. 如何避免長時間開關
- 9. 如何避免業務層中與會話相關的參數?
- 10. 與類對象相關的Javascript開銷
- 11. 避免「GC開銷超限」錯誤
- 12. Java OOP層次結構 - 避免開銷
- 13. 如何避免keyup事件的連續ajax請求的開銷?
- 14. 如何避免與Linq查詢無關?
- 15. 如何避免與
- 16. 如何避免django「與相關m2m字段衝突」錯誤?
- 17. spinlocked線程如何避免上下文切換的開銷?
- 18. onItemSelected()與嵌套開關...如何避免它?
- 19. 3by3線程同步:如何避免開銷
- 20. 如何避免關閉
- 21. 如何避免與pysnmp
- 22. 如何最終避免或避免在Servlet開關盒中前進?
- 23. 避免相關子查詢的問題
- 24. 如何避免與traits類
- 25. 如何避免與QueryOver
- 26. 開關的情況下避免循環
- 27. 避免開關的情況下-linq
- 28. 試圖避免開關或如果與一個功能
- 29. 與string.getBytes混淆()
- 30. 如何避免用戶打開兩次相同的網頁
在這條路線走得太遠之前 - 您是否有確定的性能測量結果,顯示這對您而言是一個重大問題? – 2012-02-22 17:40:14
我來C++,分配對我來說是邪惡 – gotch4 2012-02-22 20:14:52
不成熟的優化是一個更大的邪惡,雖然... – 2012-02-22 20:15:15