2012-08-16 86 views
1

這是最好的方法目前我使用類似下面什麼是轉換列表<Byte>列出<Integer>

List<Byte> bytes = new ArrayList<Byte>(); 
List<Object> integers = Arrays.asList(bytes.toArray()); 

然後需要被強制轉換爲整數整數裏面的每個對象轉換的最佳途徑。有什麼其他方式可以實現這一目標嗎?

+1

你不能爲'Integer'類型'Byte'所以你的代碼可能是什麼確實是序列unbox - 轉換框。任何其他方式來執行此操作仍然會涉及顯式循環或第三方庫。 – 2012-08-16 11:26:43

+0

您可以手動遍歷字節列表,投射對象並將它們添加到int列表 – Paranaix 2012-08-16 11:27:25

+2

'asList'只會創建列表的副本,而不會更改列表的內容。 – SJuan76 2012-08-16 11:28:41

回答

4

與標準的JDK,這裏是如何做到這一點

List<Byte> bytes = new ArrayList<Byte>(); 
// [...] Fill the bytes list somehow 

List<Integer> integers = new ArrayList<Integer>(); 
for (Byte b : bytes) { 
    integers.add(b == null ? null : b.intValue()); 
} 

如果你確定,你沒有任何nullbytes

for (byte b : bytes) { 
    integers.add((int) b); 
} 
+0

'for(byte b:bytes)integers.add((int)b)'也可以工作,看起來像OP當前正在做的事情。 – 2012-08-16 11:27:59

+0

@MarkoTopolnik:你說的對,但假設不允許有'nulls' – 2012-08-16 11:28:41

+0

@MarkoTopolnik能不能拋出NPE? – assylias 2012-08-16 11:28:46

0

如果谷歌的番石榴可用你的項目:

// assume listofBytes is of type List<Byte> 
List<Integer> listOfIntegers = Ints.asList(Ints.toArray(listOfBytes));