2011-07-28 19 views
16

संभव डुप्लिकेट:
How to convert an ArrayList containing Integers to primitive int array?Convert ArrayList <Byte> एक बाइट में []

कैसे एक ArrayList<Byte> एक byte[] में परिवर्तित करने के?

ArrayList.toArray() मुझे Byte[] वापस देता है।

+8

ऐरेलिस्ट बाइट्स को स्टोर करने का सबसे अक्षम तरीका है। यदि आप नहीं जानते कि कितने बाइट्स ByteArrayOutputStream का उपयोग लिखने() और toByteArray() के साथ करेंगे, तो यदि आप इसे से बच सकते हैं तो सूची का उपयोग न करें। –

उत्तर

5

toArray कॉल करने के बाद() आप अपाचे कॉमन्स toPrimitive विधि में परिणाम पारित कर सकते हैं:

http://commons.apache.org/lang/api-2.4/org/apache/commons/lang/ArrayUtils.html#toPrimitive(java.lang.Byte[])>

+0

इसके लिए आपको अभी भी सूची में 'toArray() 'का उपयोग करना होगा। – Marcelo

+1

यह विधि पैरामीटर के रूप में एक सरणी लेता है। ''ऐरेलिस्ट' नहीं। इसके लिए 'ArrayList'' से सरणी में रूपांतरण की आवश्यकता होगी, और फिर' 'बाइट'' सरणी को' 'बाइट'' सरणी में परिवर्तित करना होगा। सुनिश्चित नहीं है कि यह रूपांतरण करने का सबसे प्रभावी तरीका होगा। –

+0

@ विवियन मैं मानता हूं कि यह सबसे कुशल नहीं हो सकता है, लेकिन शायद लिखने के लिए सबसे सरल है। यदि प्रदर्शन एक चिंता है, तो मैं माइकल या विवियन के उत्तर का उपयोग करूंगा। – JustinKSU

2
byte[] data = new byte[list.size()]; 
for (int i = 0; i < data.length; i++) { 
    data[i] = (byte) list.get(i); 
} 

कृपया ध्यान दें कि इस तथ्य यह है कि Byte वस्तुओं byte मूल्यों में बदल जाने की आवश्यकता की वजह से कुछ समय लग सकता।

इसके अलावा, अगर अपनी सूची null मान हैं, यह एक NullPointerExcpetion फेंक देते हैं।

8
byte[] result = new byte[list.size()]; 
for(int i = 0; i < list.size(); i++) { 
    result[i] = list.get(i).byteValue(); 
} 

हाँ, जावा के संग्रह कष्टप्रद जब यह आदिम प्रकार की बात आती हैं ।

+0

आकार में लापता ब्रैकेट() – nick

4

कोई अंतर्निहित विधि दिमाग में नहीं आती है। हालांकि, एक अप कोडिंग बिल्कुल स्पष्ट है:

public static byte[] toByteArray(List<Byte> in) { 
    final int n = in.size(); 
    byte ret[] = new byte[n]; 
    for (int i = 0; i < n; i++) { 
     ret[i] = in.get(i); 
    } 
    return ret; 
} 

ध्यान दें कि यह आप दे देंगे एक NullPointerException अगर innull है या अगर यह nulls शामिल हैं। यह स्पष्ट है कि अगर आपको अलग-अलग व्यवहार की आवश्यकता है तो इस फ़ंक्शन को कैसे बदला जाए।

संबंधित मुद्दे