CodeGym/Java Blog/अनियमित/जावा में वस्तुओं को कैसे स्वैप करें?
John Squirrels
स्तर 41
San Francisco

जावा में वस्तुओं को कैसे स्वैप करें?

अनियमित ग्रुप में प्रकाशित
सदस्य
प्रोग्रामिंग में वस्तुओं की अदला-बदली सबसे लोकप्रिय क्रियाओं में से एक है। यह छँटाई में विशेष रूप से उपयोगी है। अदला-बदली में क्या होता है दो चर अपने मूल्यों का आदान-प्रदान करते हैं। इस लेख में, हम सीखते हैं कि जावा में दो अलग-अलग मामलों में वस्तुओं की अदला-बदली कैसे करें । एक स्वतंत्र वस्तुओं की अदला-बदली कर रहा है और दूसरा एक सूची या एक सरणी में दो वस्तुओं की अदला-बदली कर रहा है। आइए पहले स्वतंत्र वस्तुओं की अदला-बदली की जाँच करें।जावा में वस्तुओं को कैसे स्वैप करें?  - 1

वस्तुओं की अदला-बदली आदिम डेटा प्रकारों की अदला-बदली से अलग है

आदिम मूल्यों को स्वैप करने के लिए उपयोग करने के लिए सामान्य तरीकों में से एक अस्थायी चर का उपयोग कर रहा है। हालाँकि, आप जानते हैं कि किसी विधि में पैरामीटर पास करते समय जावा "पास बाय वैल्यू" का उपयोग करता है। इसलिए, वस्तुओं की अदला-बदली इस विधि से आपकी अपेक्षा के अनुरूप काम नहीं करेगी। निम्न उदाहरण इसे दिखाएगा।
public class ObjectSwapper {
    public static void main(String[] args) {
        InnerClass obj1 = new InnerClass(12345);
        InnerClass obj2 = new InnerClass(11111);
        swap(obj1, obj2);
        System.out.println("Obj1 ID value : " + obj1.id + "\n" + "Obj2 ID value :  " + obj2.id);
    }
    static void swap(InnerClass x, InnerClass y) {
        InnerClass temp;
        temp = x;
        x = y;
        y = temp;
    }
    static class InnerClass {
        public int id;
        public InnerClass(int Id) {
            this.id = Id;
        }
    }
}
आउटपुट: जावा में वस्तुओं को कैसे स्वैप करें?  - 2कोई अदला-बदली नहीं हुई! जब हम स्वैप विधि कहते हैं और वस्तुओं को पास करते हैं, तो हम सभी संपत्ति मूल्यों के साथ वस्तु की एक प्रति पास करते हैं। यही कारण है कि इसे "पास बाय वैल्यू" कहा जाता है। स्वैप विधि वास्तव में मूल वस्तु की प्रतिलिपि को प्रभावित करने वाली वस्तुओं को स्वैप करती है। इसलिए मूल वस्तुओं को अपरिवर्तित रखा जाता है। इसका समाधान दो वस्तुओं को लपेटने के लिए एक आवरण वर्ग का उपयोग करना होगा।

एक आवरण वर्ग के साथ वस्तुओं की अदला-बदली

public class ObjectSwapper {
    public static void main(String[] args) {

        InnerClass obj1 = new InnerClass(12345);
        InnerClass obj2 = new InnerClass(11111);
        objectWrapper wrapperObj1 = new objectWrapper(obj1);
        objectWrapper wrapperObj2 = new objectWrapper(obj2);
        // Values before swapping
        System.out.println("WrapperObj1 InncerClass ID value : " + wrapperObj1.innerObject.id + "\n" + "WrapperObj2 InncerClass ID value : "
                + wrapperObj2.innerObject.id + "\n");

        swap(wrapperObj1, wrapperObj2);

        // Values after swapping
        System.out.println("WrapperObj1 InncerClass ID value : " + wrapperObj1.innerObject.id + "\n" + "WrapperObj2 InncerClass ID value : "
                + wrapperObj2.innerObject.id);
    }

       static void swap(objectWrapper wrapperObj1, objectWrapper wrapperObj2) {
        InnerClass temp;
        temp = wrapperObj1.innerObject;
        wrapperObj1.innerObject = wrapperObj2.innerObject;
        wrapperObj2.innerObject = temp;
    }

    static class InnerClass {
        public int id;
        public InnerClass(int Id) {
            id = Id;
        }
    }

    static class objectWrapper {
        InnerClass innerObject;
        public objectWrapper(InnerClass objInnner) {
            this.innerObject = objInnner;
        }
    }
}
यहां हमने एक रैपर वर्ग का उपयोग किया है जिसमें वस्तुओं के प्रकार की संपत्ति है जिसे हमें स्वैप करने की आवश्यकता है। एक साधारण स्वैप विधि का उपयोग करके, यह रैपर क्लास ऑब्जेक्ट्स के इनरक्लास ऑब्जेक्ट्स की सामग्री को स्वैप करता है। स्वैप किए गए इनरक्लास ऑब्जेक्ट्स के किसी और कार्यान्वयन के लिए, हम तदनुसार wrapperObj1.xyz और wrapperObj2.xyz का उपयोग कर सकते हैं। उत्पादन:जावा में वस्तुओं को कैसे स्वैप करें?  - 3

जावा में अंतर्निहित स्वैप () विधि

जावा कलेक्शंस फ्रेमवर्क की कक्षाओं में स्वैप() नामक तत्वों को स्वैप करने के लिए एक अंतर्निहित विधि है । Java.util एक उपयोगिता वर्ग है जिसमें स्थिर विधियाँ हैं जो संग्रह इंटरफ़ेस से सूची जैसे तत्वों पर काम कर सकती हैं स्वैप पद्धति का उपयोग करना उस उदाहरण की तुलना में बहुत आसान है जिसकी हमने पहले चर्चा की थी। स्वैप () विधि एक स्थिर विधि है और इसलिए आप इसे वर्ग नाम के साथ Collections.swap() के रूप में आमंत्रित करते हैं । स्वैप () विधि का रिटर्न प्रकार शून्य है, इसलिए यह कुछ भी वापस नहीं करेगा। आपको स्वैप () विधि में तीन तर्क पारित करने की आवश्यकता है । नीचे नोट की जाँच करें।
swap(List<?> list, int a, int b)
पैरामीटर्स:
  • सूची - सूची में वे तत्व शामिल हैं जिन्हें हम स्वैप करते हैं।
  • ए - स्वैप किए जाने वाले तत्व का सूचकांक ।
  • बी - स्वैप किए जाने वाले दूसरे तत्व का सूचकांक ।
ध्यान दें कि यदि a या b सूची आकार की सीमा से बाहर है तो यह विधि IndexOutOfBoundsException को फेंक देगी। सूची का अधिकतम सूचकांक सूची के आकार से एक कम है। इससे अधिक किसी भी इंडेक्स वैल्यू के कारण IndexOutOfBoundsException को फेंक दिया जाएगा। कैसे एक ArrayList पर स्वैप विधि का उपयोग करने का एक उदाहरण नीचे दिखाया गया है।

स्वैप () विधि एक ArrayList पर

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ArrayListSwapper {
    public static void main(String[] args) {
        try {
            List fruits = new ArrayList();
            fruits.add("Mango");
            fruits.add("Papaya");
            fruits.add("Apple");
            fruits.add("Orange");
            fruits.add("Watermelon");
            fruits.add("Bael");
            System.out.println("Before swapping : " + fruits);
         //using Collection.swap() method
            Collections.swap(fruits, 2, 5);
            System.out.println("After swapping : " + fruits);
        } catch (IndexOutOfBoundsException e) {
            System.out.println("Index Out of Bound Exception thrown : " + e);
        }
    }
}
फलों की ArrayList में छह तत्व होते हैं। हम फ़ंक्शन स्वैप () विधि का उपयोग करके दूसरे और पांचवें तत्वों को स्वैप करते हैं। सबसे अच्छा अभ्यास है स्वैप () विधि को ट्राइ-कैच ब्लॉक के भीतर लिखना क्योंकि यह रन टाइम पर IndexOutOfBoundsException को फेंक सकता है। आउटपुट: यदि हम '2' और '8' को इंडेक्स के रूप में पास करते हैं तो एप्लिकेशन एक अपवाद फेंक देगा क्योंकि सूची का आकार छह है। जावा में वस्तुओं को कैसे स्वैप करें?  - 4
Collections.swap(fruits, 2, 8);
आउटपुट होगा:जावा में वस्तुओं को कैसे स्वैप करें?  - 5

निष्कर्ष

इस ट्यूटोरियल में, हमने जावा में उपयोग की जाने वाली कुछ अदला-बदली तकनीकों पर चर्चा की। उनमें से एक रैपर वर्ग का उपयोग कर रहा है और दूसरा संग्रह.स्वैप () विधि का उपयोग कर रहा है। यह याद रखना महत्वपूर्ण है कि फ़ंक्शन स्वैप () का उपयोग करते समय अपवाद हैंडलिंग की जानी चाहिए क्योंकि यह रनटाइम अपवाद फेंकता है।
टिप्पणियां
  • लोकप्रिय
  • नया
  • पुराना
टिप्पणी लिखने के लिए आपको साइन इन करना होगा
इस पेज पर अभी तक कोई टिप्पणियां नहीं हैं