जावा में दो-आयामी सरणी को प्रभावी ढंग से कॉपी करना
दो-आयामी सरणी के साथ काम करते समय, इसकी एक प्रति बनाना अक्सर आवश्यक होता है मूल सरणी अपने मूल मूल्यों को संरक्षित करने के लिए। हालाँकि, पुराने = वर्तमान जैसे प्रत्यक्ष असाइनमेंट से अनपेक्षित परिणाम हो सकते हैं।
जावा ऐरे असाइनमेंट को समझना
जावा में, ऐरे ऑब्जेक्ट हैं, और ऐरे के बीच असाइनमेंट संदर्भ हैं उसी अंतर्निहित सरणी के लिए। इसलिए, एक सरणी को अपडेट करने से दूसरे पर असर पड़ता है क्योंकि वे दोनों एक ही डेटा की ओर इशारा करते हैं। बस सरणियों के संदर्भ निर्दिष्ट करें। परिणामस्वरूप, जब पुराने() को कॉल करने के बाद करंट को अपडेट किया जाता है, तो परिवर्तन पुराने में भी दिखाई देते हैं। इसी तरह, कीपोल्ड () को कॉल करने के बाद, करंट पुराने का संदर्भ बन जाता है, और कोई भी अपडेट पुराने अपडेट करंट का संदर्भ बन जाता है। ]सरणी की सच्ची प्रतिलिपि बनाने के लिए, एक गहरी प्रतिलिपि बनाना आवश्यक है। जावा 8 में प्रस्तुत स्ट्रीम एपीआई निम्नलिखित कोड का उपयोग करके इसे प्राप्त करने का एक कुशल तरीका प्रदान करता है:
int[][] कॉपी = Arrays.stream(matrix).map(int[]::clone .toArray(int[][]::new);
यहां, इनपुट ऐरे की प्रत्येक पंक्ति (इस उदाहरण में मैट्रिक्स) को मैप (int[]::क्लोन) का उपयोग करके क्लोन किया गया है, प्रत्येक पंक्ति के लिए एक नई सरणी बनाना। क्लोन किए गए सरणियों की परिणामी धारा को फिर toArray(int[][]::new) का उपयोग करके दो-आयामी सरणी में परिवर्तित किया जाता है। यह प्रक्रिया सुनिश्चित करती है कि प्रतिलिपि और मूल सरणी दोनों अलग-अलग हैं और इन्हें स्वतंत्र रूप से संशोधित किया जा सकता है।अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3