मेरे पास जावा में इंटीजर की एक सरणी है, मैं इसका केवल एक हिस्सा उपयोग करना चाहता हूं। मुझे पाइथन में पता है कि आप इस सरणी की तरह कुछ कर सकते हैं [अनुक्रमणिका:] और यह इंडेक्स से सरणी देता है। जावा में ऐसा कुछ संभव है।जावा में एक ऐरे का केवल एक हिस्सा मिलता है?
उत्तर
उपयोग java.util.Arrays कक्षा से copyOfRange
विधि:
int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);
STARTINDEX रेंज की प्रारंभिक अनुक्रमणिका प्रतिलिपि बनानी है समावेशी है।
एंड इंडेक्स कॉपी करने के लिए सीमा की अंतिम अनुक्रमणिका है, विशेष। (यह सूचकांक सरणी के बाहर झूठ हो सकते हैं)
उदा:
//index 0 1 2 3 4
int[] arr = {10, 20, 30, 40, 50};
Arrays.copyOfRange(arr, 0, 2); // returns {10, 20}
Arrays.copyOfRange(arr, 1, 4); // returns {20, 30, 40}
Arrays.copyOfRange(arr, 2, arr.length); // returns {30, 40, 50} (length = 5)
एक आकार सीमा प्रतीत होती है? केवल यह काम करता है: 'Arrays.copyOfRange (Thread.currentThread()। getStackTrace(), 1,255) '255 के बजाय मैं इंटीजर का उपयोग नहीं कर सकता।MAX_VALUE, अगर मैं वास्तविक लंबाई प्राप्त नहीं करना चाहता –
@AquariusPower आकार सीमा सरणी आकार है, और यह 255 से बड़ा हो सकता है। आप केवल 'एंड इंडेक्स' को पहले के रूप में पारित सरणी के आकार से बड़ा नहीं प्रदान कर सकते तर्क। इसलिए, यदि आप एक पूर्ण प्रतिलिपि चाहते हैं, तो इस सरणी का संदर्भ देने वाला एक चर बनाएँ और 'Arrays.copyOfRange (var, 0, var.length) 'या' Arrays.copyOf (var, var.length) ' – elias
का उपयोग करना होगा stacktrace उप-सरणी के लिए एक स्थानीय var बनाएँ, लेकिन मैंने पाया कि यह काम करता है !!! 'Arrays.copyOfRange (Thread.currentThread()। GetStackTrace(), 1, Short.MAX_VALUE)' –
हाँ, आप Arrays.copyOfRange
उपयोग कर सकते हैं यह (ध्यान दें कि वहाँ एक प्रति है एक ही बात के बारे में है: आप में परिवर्तन नहीं करते प्रारंभिक सरणी)।
यह कहा गया है कि, यदि आप एक स्पष्ट प्रतिलिपि बनाना नहीं चाहते हैं, तो आपको @ के-बेलो के उत्तर में उल्लिखित 'सूची' और 'उपसूची' का उपयोग करना होगा। –
यह सही है। जावा में सरणी स्लाइसिंग सुविधाएं नहीं हैं जो अधिक आधुनिक भाषाएं प्रदान करती हैं। –
मुझे यकीन नहीं है कि मैं इसे इस तरह से रखूंगा, लेकिन ... हाँ, जावा सरणी स्लाइसिंग की पेशकश नहीं करता है। (उस ने कहा, इस दृष्टिकोण के कुछ फायदे हैं: मेमोरी लीक के लिए कम संभावनाएं, अतिरिक्त फ़ील्ड से बचकर कम सरणी ओवरहेड इत्यादि। आप किसी भी तरह से जा सकते हैं।) –
आप कुछ इस तरह का उपयोग कर सकते हैं: Arrays#copyOfRange
बाहर copyOfRange चेक; और उदाहरण:
int[] arr2 = Arrays.copyOfRange(arr,0,3);
हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन यहां उत्तर के आवश्यक हिस्सों को शामिल करना बेहतर है और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक किए गए पृष्ठ में परिवर्तन होने पर लिंक-केवल उत्तर अमान्य हो सकते हैं। - [समीक्षा से] (/ समीक्षा/कम गुणवत्ता वाले पदों/187071 9 1) –
आप अपनी सरणी को एक सूची के रूप में लपेट सकते हैं, और इसके एक उपन्यास का अनुरोध कर सकते हैं।
MyClass[] array = ...;
List<MyClass> subArray = Arrays.asList(array).subList(index, array.length);
आप जावा 1.6 या अधिक से अधिक उपयोग कर रहे हैं, तो आप Arrays.copyOfRange
का उपयोग सरणी के एक हिस्से को कॉपी करने के लिए कर सकते हैं। जावाडोक से:
निर्दिष्ट सरणी की निर्दिष्ट सीमा को एक नई सरणी में प्रतिलिपि बनाता है। रेंज (से) की प्रारंभिक अनुक्रमणिका शून्य और
original.length
के बीच होनी चाहिए, समावेशी।original[from]
पर मान प्रतिलिपि के प्रारंभिक तत्व में रखा गया है (जब तकfrom == original.length
याfrom == to
)। मूल सरणी में आने वाले तत्वों के मान प्रतिलिपि में बाद के तत्वों में रखे जाते हैं। श्रेणी की अंतिम अनुक्रमणिका (to
), जोfrom
से अधिक या बराबर होनी चाहिए,original.length
से अधिक हो सकती है, जिस स्थिति मेंfalse
प्रतिलिपि के सभी तत्वों में रखा गया है जिनकी अनुक्रमणिकाoriginal.length - from
से अधिक या बराबर है। लौटाए गए सरणी की लंबाईto - from
होगी।
यहाँ एक simple example है:
/**
* @Program that Copies the specified range of the specified array into a new
* array.
* CopyofRange8Array.java
* Author:-RoseIndia Team
* Date:-15-May-2008
*/
import java.util.*;
public class CopyofRange8Array {
public static void main(String[] args) {
//creating a short array
Object T[]={"Rose","India","Net","Limited","Rohini"};
// //Copies the specified short array upto specified range,
Object T1[] = Arrays.copyOfRange(T, 1,5);
for (int i = 0; i < T1.length; i++)
//Displaying the Copied short array upto specified range
System.out.println(T1[i]);
}
}
तुम कोशिश कर सकते हैं:
System.arraycopy(sourceArray, 0, targetArray, 0, targetArray.length);// copies whole array
// copies elements 1 and 2 from sourceArray to targetArray
System.arraycopy(sourceArray, 1, targetArray, 0, 2);
देखें javadoc for System।
- 1. जावा RegEx: बस मिलान समूह का एक हिस्सा मिलता है
- 2. गिट पुश केवल एक भंडार का हिस्सा
- 3. केवल एक छोटा सा हिस्सा
- 4. एक ऐरे (जावा)
- 5. जावा में एक स्ट्रिंग का हिस्सा कैसे पुनर्प्राप्त करें?
- 6. एक ऐरे का आकार बदलना
- 7. नियमित अभिव्यक्ति से मिलान का केवल एक हिस्सा लौटाना
- 8. मैं विशाल बाइनरी (फ़ाइल) का केवल एक हिस्सा कैसे चुनूं?
- 9. डब्ल्यूपीएफ। बड़े कैनवास का केवल एक हिस्सा कैसे दिखाएं?
- 10. जावास्क्रिप्ट regex प्रतिस्थापित - लेकिन मिलान स्ट्रिंग का केवल एक हिस्सा?
- 11. जावा में इंटरफ़ेस का ऐरे
- 12. जावास्क्रिप्ट एक सरणी का हिस्सा लेता है
- 13. त्रुटि: एक लेबल केवल एक कथन का हिस्सा हो सकता है
- 14. एक जावास्क्रिप्ट एसोसिएटिव ऐरे का एक टुकड़ा प्राप्त करें?
- 15. कोड का हिस्सा जिसे केवल एक बार कहा जाता है - योग्यता का तरीका है?
- 16. एक ऐरे
- 17. एक 2 डी ऐरे
- 18. जावा एक ऐरे से डुप्लिकेट निकालें?
- 19. एक ऐरे का भारित केंद्र
- 20. आईओएस डीकोड एक छवि का हिस्सा
- 21. आईओएस सिम्युलेटर में चुपचाप कैसे करें जब मानचित्र दृश्य स्क्रीन का केवल एक हिस्सा है?
- 22. एक बाइट ऐरे (PHP)
- 23. Jruby में जावा ऐरे
- 24. मैं एक छवि का हिस्सा दूसरे में कैसे कॉपी करूं?
- 25. जावा स्ट्रिंग ऑब्जेक्ट्स वर्णों का एक ऐरे हैं?
- 26. sizeof() एक सी struct का हिस्सा - तरह
- 27. सी # - इसे का एक हिस्सा द्वारा एक प्रक्रिया हत्या नाम
- 28. एक क्यूटी विजेट कब एक पेंटएवेंट मिलता है?
- 29. एक HTMLCollection को एक ऐरे
- 30. एक गिट भंडार का हिस्सा निकालें?
संभावित डुप्लिकेट [हेप पर एक नई सरणी बनाये बिना जावा में किसी सरणी के एक सेगमेंट को पकड़ें] (http://stackoverflow.com/questions/1100371/grab-a-segment-of-an-array-in- जावा-बिना-निर्माण-एक-नई-सरणी-ऑन-हीप) –