CodeGym /جاوا بلاگ /Random-UR /جاوا میں اشیاء کو کیسے تبدیل کیا جائے؟
John Squirrels
سطح
San Francisco

جاوا میں اشیاء کو کیسے تبدیل کیا جائے؟

گروپ میں شائع ہوا۔
اشیاء کو تبدیل کرنا پروگرامنگ میں سب سے زیادہ مقبول عمل میں سے ایک ہے۔ یہ چھانٹنے میں خاص طور پر مفید ہے۔ تبادلہ میں کیا ہوتا ہے دو متغیر اپنی اقدار کا تبادلہ کرتے ہیں۔ اس مضمون میں، ہم سیکھتے ہیں کہ جاوا میں دو مختلف صورتوں میں اشیاء کو کیسے تبدیل کیا جائے ۔ ایک آزاد اشیاء کو تبدیل کر رہا ہے اور دوسرا فہرست یا ایک صف میں دو اشیاء کو تبدیل کر رہا ہے۔ آئیے پہلے خود مختار اشیاء کو تبدیل کرنے کا جائزہ لیں۔جاوا میں اشیاء کو کیسے تبدیل کیا جائے؟  - 1

اشیاء کو تبدیل کرنا قدیم ڈیٹا کی قسموں کو تبدیل کرنے سے مختلف ہے۔

قدیم اقدار کو تبدیل کرنے کے لئے استعمال کرنے کے لئے عام طریقوں میں سے ایک عارضی متغیر کا استعمال کرنا ہے۔ تاہم، آپ جانتے ہیں کہ جاوا کسی طریقہ میں پیرامیٹرز کو منتقل کرتے وقت "Pass by Value" استعمال کرتا ہے۔ لہذا، اشیاء کو تبدیل کرنا اس طریقہ کار سے آپ کی توقع کے مطابق کام نہیں کرے گا۔ مندرجہ ذیل مثال اسے دکھائے گی۔
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کوئی تبادلہ نہیں ہوا! جب ہم سویپ میتھڈ کو کال کرتے ہیں اور آبجیکٹ کو پاس کرتے ہیں تو ہم تمام پراپرٹی ویلیوز کے ساتھ آبجیکٹ کی ایک کاپی پاس کرتے ہیں۔ یہی وجہ ہے کہ اسے "Pass by Value" کہا جاتا ہے۔ سویپ کا طریقہ دراصل اصل آبجیکٹ کی کاپی کو متاثر کرنے والی اشیاء کو تبدیل کرتا ہے۔ لہذا اصل اشیاء کو بغیر تبدیلی کے رکھا جاتا ہے۔ اس کا حل یہ ہوگا کہ دو اشیاء کو لپیٹنے کے لیے ریپر کلاس کا استعمال کیا جائے۔

ریپر کلاس کے ساتھ اشیاء کو تبدیل کرنا

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;
        }
    }
}
یہاں ہم نے ایک ریپر کلاس کا استعمال کیا جس میں اس قسم کی اشیاء کی خاصیت ہے جس کی ہمیں تبادلہ کرنے کی ضرورت ہے۔ ایک آسان سویپ طریقہ استعمال کرکے، یہ ریپر کلاس آبجیکٹ کے اندرونی کلاس اشیاء کے مواد کو تبدیل کرتا ہے۔ تبدیل شدہ InnerClass اشیاء کے مزید نفاذ کے لیے، ہم اس کے مطابق wrapperObj1.xyz اور wrapperObj2.xyz استعمال کر سکتے ہیں۔ آؤٹ پٹ:جاوا میں اشیاء کو کیسے تبدیل کیا جائے؟  - 3

جاوا میں بلٹ ان swap() طریقہ

جاوا کلیکشن فریم ورک کی کلاسوں میں عناصر کو تبدیل کرنے کا ایک بلٹ ان طریقہ ہے جسے swap() کہتے ہیں ۔ java.util ایک یوٹیلیٹی کلاس ہے جس میں جامد طریقے ہوتے ہیں جو کلیکشن انٹرفیس سے لسٹ جیسے عناصر پر کام کر سکتے ہیں۔ تبادلہ کا طریقہ استعمال کرنا اس مثال سے کہیں زیادہ آسان ہے جس پر ہم نے پہلے بات کی تھی۔ swap () طریقہ ایک جامد طریقہ ہے اور اس لیے آپ اسے کلاس کے نام کے ساتھ Collections.swap() کہتے ہیں ۔ swap() طریقہ کی واپسی کی قسم باطل ہے لہذا یہ کچھ بھی واپس نہیں کرے گا۔ آپ کو swap() طریقہ میں تین دلائل دینے کی ضرورت ہے ۔ نیچے دیے گئے نوٹ کو چیک کریں۔
swap(List<?> list, int a, int b)
پیرامیٹرز:
  • فہرست - فہرست میں وہ عناصر شامل ہیں جن کو ہم تبدیل کرتے ہیں۔
  • a — تبدیل کیے جانے والے عنصر کا اشاریہ ۔
  • b — تبدیل کیے جانے والے دوسرے عنصر کا اشاریہ ۔
نوٹ کریں کہ یہ طریقہ ایک IndexOutOfBoundsException پھینک دے گا اگر a یا b فہرست کے سائز کی حد سے باہر ہے۔ فہرست کا زیادہ سے زیادہ اشاریہ فہرست کے سائز سے ایک کم ہے۔ اس سے زیادہ کوئی بھی انڈیکس قدر IndexOutOfBoundsException کو پھینکے جانے کا سبب بنے گی۔ ArrayList پر سویپ کا طریقہ استعمال کرنے کا طریقہ ذیل میں دکھایا گیا ہے۔

swap() طریقہ 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 چھ عناصر پر مشتمل ہے۔ ہم فنکشن swap() طریقہ استعمال کرتے ہوئے 2nd اور 5th عناصر کو تبدیل کرتے ہیں ۔ بہترین عمل یہ ہے کہ swap() طریقہ کو ٹرائی کیچ بلاک کے اندر لکھیں کیونکہ یہ رن ٹائم پر IndexOutOfBoundsException پھینک سکتا ہے۔ آؤٹ پٹ: اگر ہم '2' اور '8' کو اشاریہ جات کے طور پر پاس کرتے ہیں تو ایپلیکیشن ایک استثنا دے گی کیونکہ فہرست کا سائز چھ ہے۔ جاوا میں اشیاء کو کیسے تبدیل کیا جائے؟  - 4
Collections.swap(fruits, 2, 8);
آؤٹ پٹ ہو گا:جاوا میں اشیاء کو کیسے تبدیل کیا جائے؟  - 5

نتیجہ

اس ٹیوٹوریل میں، ہم نے جاوا میں استعمال ہونے والی تبدیلی کی چند تکنیکوں پر تبادلہ خیال کیا۔ ان میں سے ایک ریپر کلاس استعمال کر رہا ہے اور دوسرا Collection.swap() طریقہ استعمال کر رہا ہے۔ یہ یاد رکھنا ضروری ہے کہ فنکشن swap() کا استعمال کرتے وقت استثنیٰ ہینڈلنگ کی جانی چاہئے کیونکہ یہ رن ٹائم استثناء پھینکتا ہے۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION