我想創建一個可增長的字節數組。即列表。 在C#中會usally做以下語法Java基本類型的列表泛型語法
List<byte> mylist = new List<byte>();
,其中在Java中,這句法不工作,我身邊有GOOGLE上搜索,發現下面的代碼
List myList = new ArrayList();
但是這不是我想要的。任何想法,我要去哪裏錯了?
我想創建一個可增長的字節數組。即列表。 在C#中會usally做以下語法Java基本類型的列表泛型語法
List<byte> mylist = new List<byte>();
,其中在Java中,這句法不工作,我身邊有GOOGLE上搜索,發現下面的代碼
List myList = new ArrayList();
但是這不是我想要的。任何想法,我要去哪裏錯了?
使用包裝類Byte
:
List<Byte> mylist = new ArrayList<Byte>();
然後,因爲自動裝箱的,你仍然可以有:
for (byte b : mylist) {
}
你必須在JRE提供的Byte
類。
該類是byte
原始類型的相應類。
查看here瞭解原始類型。
你可以這樣做:
List<Byte> myList = new ArrayList<Byte>();
byte b = 127;
myList.add(b);
b = 0; // resetting
b = myList.get(0); // => b = 127 again
正如邁克爾在評論中指出:
List<Byte> myList = new ArrayList<Byte>();
Byte b = null;
myList.add(b);
byte primitiveByte = myList.get(0);
結果:
Exception in thread "main" java.lang.NullPointerException
at TestPrimitive.main(TestPrimitive.java:12)
注意使用ArrayList<Byte>
來存儲可增長數組的字節可能不是一個好主意,因爲每個字節都被裝箱,這意味着一個新的Byte對象是al位於。所以每個字節的總內存成本是ArrayList +一個字節對象中的一個指針。
這可能更好使用java.io.ByteArrayOutputStream
。在那裏,每個字節的內存成本是1個字節。
如果您多描述一下上下文,我們可以提供更好的建議。
列表是一個接口,所以你不能新的了。你需要使用一個具體的類來代替,比如ArrayList或LinkedList – 2010-02-20 11:30:41
@Michael Williamson一個錯字,而不是我不知道的;) – Bozho 2010-02-20 11:35:04
感謝Bozho爲我工作。 – 2010-02-20 11:43:40