JavaRush /جاوا بلاگ /Random-UR /کافی وقفہ نمبر 116۔ جاوا میں فنکشن پوائنٹرز کا استعمال کی...

کافی وقفہ نمبر 116۔ جاوا میں فنکشن پوائنٹرز کا استعمال کیسے کریں۔ جاوا میں indexOf - جاوا میں سٹرنگ کا انڈیکس کیسے تلاش کیا جائے۔

گروپ میں شائع ہوا۔

جاوا میں فنکشن پوائنٹرز کا استعمال کیسے کریں۔

ماخذ: Dev.to پوائنٹرز ایسی اشیاء ہیں جو میموری ایڈریس کو اسٹور کرتی ہیں اور قدر سے گزرنے کے بجائے براہ راست ہدف آبجیکٹ، صف، یا متغیر ایڈریس کی طرف اشارہ کرکے میموری کو محفوظ کرسکتی ہیں۔ بدقسمتی سے، جاوا میں پوائنٹرز کا کوئی "حقیقی" تصور نہیں ہے۔ لیکن خوش قسمتی سے ہمارے لئے، طریقہ کار کے حوالہ جات کا استعمال کرتے ہوئے ایک حل موجود ہے جو اصل چیز کے قریب ہے۔ کافی وقفہ نمبر 116۔  جاوا میں فنکشن پوائنٹرز کا استعمال کیسے کریں۔  جاوا میں indexOf - جاوا میں سٹرنگ کا انڈیکس کیسے تلاش کیا جائے - 1

فنکشن پوائنٹرز

فنکشن پوائنٹر ایک پوائنٹر ہے جو فنکشن کے ایڈریس کی طرف اشارہ کرتا ہے۔ استعمال کے کچھ معاملات میں ایک فنکشن بنا کر کال بیک روٹین بنانا شامل ہے جو اس کے عمل کی بنیاد پر کسی دوسرے فنکشن کو کال کرتا ہے، یا متحرک طور پر کہلائے جانے والے طریقوں کے لیے فنکشن پوائنٹرز کی ایک صف کو اسٹور کرنا (مثال کے طور پر، ایمولیٹر کے لیے پروسیسر کی ہدایات کو اسٹور کرنا)۔

فنکشن پوائنٹر سمولیشن

طریقہ حوالہ جات کی چار اقسام ہیں ۔ ہم ایک قسم کا استعمال کرتے ہیں جو کسی مخصوص چیز کے مثال کے طریقہ کار سے مراد ہے۔ آئیے ایک انٹرفیس کی وضاحت کرتے ہوئے شروع کریں جو آپ کے اشارہ کردہ طریقوں کے دستخطوں کی وضاحت کرتا ہے۔
// Wrapping interface
private interface FunctionPointer {
  // Method signatures of pointed method
  void methodSignature(int a);
}
پھر ہم ٹارگٹ میتھڈ کے دستخط کے ساتھ طریقے بنائیں گے۔
public void method1(int b) {
  System.out.println("Called method1 with integer " + b);
}

public void method2(int v) {
  System.out.println("Called method2 with integer " + v);
}

public void method3(int a) {
  System.out.println("Called method3 with integer " + a);
}
اگلا مرحلہ ریپر انٹرفیس متغیرات بنانا اور ان کو طریقے تفویض کرنا ہے۔ متغیرات اس فنکشن کے لیے ایک پوائنٹر کے طور پر کام کریں گے جس کو اسٹور کیا جائے یا اس پر عمل کیا جائے۔
// Create a variable of the interface and assign
// the method references
FunctionPointer pointer1 = this::method1;
FunctionPointer pointer2 = this::method2;

// Call both methods using their "pointer"
pointer1.methodSignature(3);
pointer2.methodSignature(2);

// Reassign and call pointer 1
pointer1 = this::method3;

pointer1.methodSignature(5);
انٹیجر 3 کے ساتھ میتھڈ 1 کہلاتا ہے 2 انٹیجر کے ساتھ میتھڈ 2 کہلاتا ہے 5 کے ساتھ طریقہ3 کہلاتا ہے

لیمبڈا ایکسپریشنز کا استعمال

لیمبڈا ایکسپریشنز کا استعمال کرتے ہوئے طریقہ کے حوالے تفویض کیے جا سکتے ہیں۔
// Create a method reference and assign a methods using a lambda.
FunctionPointer pointer1 =
  (a) -> System.out.println("Called pointer1 with int " + a);

FunctionPointer pointer2 =
  (b) -> System.out.println("Called pointer2 with int " + b);

فنکشن پوائنٹرز کی صف

ریپر انٹرفیس سرنی بنا کر طریقہ حوالوں کی ایک صف کی فعالیت کو نقل کیا جا سکتا ہے۔
// Create an array of "pointers"
FunctionPointer[] functionPointersArray = new FunctionPointer[3];

// Assign methods
functionPointersArray[0] = this::method1;
functionPointersArray[1] = this::method2;
functionPointersArray[2] = this::method3;

// Call methods
functionPointersArray[0].methodSignature(3);
functionPointersArray[1].methodSignature(4);
functionPointersArray[2].methodSignature(5);

فنکشن پوائنٹر بمقابلہ براہ راست کال

اگر آپ دونوں آپشنز کا موازنہ کرتے ہیں تو، کسی طریقہ کو براہ راست کال کرنا کسی طریقہ کا حوالہ استعمال کرنے سے تقریباً 5 گنا تیز ہے۔ یہ سب ذخیرہ شدہ طریقہ کے مقابلے میں لیمبڈا اظہار کو کال کرنے کے اضافی قدم کی وجہ سے ہے۔ لیکن شاید آپ کو ایک سال میں کارکردگی کا کوئی نقصان نظر نہیں آئے گا، لہذا اس کی فکر نہ کریں۔

نتیجہ

پوائنٹرز متغیرات ہیں جو کسی قدر کے بجائے براہ راست کسی چیز کے پتے کی طرف اشارہ کرتے ہیں۔ فنکشن پوائنٹر براہ راست فنکشن ایڈریس کی طرف اشارہ کرتا ہے، جو میموری کی کھپت کو کم کر سکتا ہے۔ جاوا میں پوائنٹر نہیں ہیں، لیکن طریقہ کار کے حوالہ جات یا لیمبڈا اظہار کا استعمال کرتے ہوئے رویے کی تقلید کر سکتے ہیں۔ طریقہ کا حوالہ استعمال کرنا کسی طریقہ کو براہ راست کال کرنے سے سست ہے، لیکن یہ اس کے استعمال کو نہیں روکتا ہے۔

جاوا میں indexOf - جاوا میں سٹرنگ کا انڈیکس کیسے تلاش کیا جائے۔

ماخذ: FreeCodeCamp ایک سٹرنگ حروف کا ایک مجموعہ ہے جو دوہرے اقتباسات میں بند ہے۔ indexOf طریقہ سٹرنگ میں مخصوص کریکٹر یا سبسٹرنگ کی انڈیکس پوزیشن لوٹاتا ہے۔ اس مضمون میں، ہم مختلف indexOf طریقوں کے نحو کے بارے میں جانیں گے ۔ ہم ایسی مثالیں بھی دیکھیں گے جو آپ کو جاوا کوڈ میں کسی کریکٹر یا سبسٹرنگ کے اشاریہ کی تلاش کو سمجھنے اور مؤثر طریقے سے استعمال کرنے میں مدد کریں گی۔ کافی وقفہ نمبر 116۔  جاوا میں فنکشن پوائنٹرز کا استعمال کیسے کریں۔  جاوا میں indexOf - جاوا میں سٹرنگ کا انڈیکس کیسے تلاش کیا جائے - 2

indexOf طریقہ کا نحو

indexOf طریقہ میں درج ذیل طریقے ہیں:
public int indexOf(int char)
public int indexOf(int char, int fromIndex)
public int indexOf(String str)
public int indexOf(String str, int fromIndex)
آئیے ان پیرامیٹرز کی وضاحت کریں:
  • char فی لائن ایک حرف کی نمائندگی کرتا ہے۔
  • fromIndex اس پوزیشن کی وضاحت کرتا ہے جہاں سے کسی کریکٹر یا سبسٹرنگ کے انڈیکس کی تلاش شروع ہونی چاہیے۔ یہ ضروری ہے جب آپ کے پاس دو حروف/سٹرنگ ہوں جن کی سٹرنگ میں ایک جیسی قدر ہو۔ اس پیرامیٹر کے ساتھ آپ indexOf طریقہ بتا سکتے ہیں کہ کہاں سے شروع کرنا ہے۔
  • str ایک سٹرنگ میں سب اسٹرنگ کی نمائندگی کرتا ہے۔
پریشان نہ ہوں اگر آپ ابھی تک یہ نہیں سمجھتے ہیں کہ یہ سب کیسے کام کرتا ہے — مثالیں سب کچھ واضح کر دیں گی!

جاوا میں indexOf طریقہ استعمال کرنے کا طریقہ

پہلی مثال میں ہم سٹرنگ میں ایک کریکٹر کا انڈیکس دیکھیں گے۔ اس سے ہمیں عوامی int indexOf(int char) طریقہ کو سمجھنے میں مدد ملے گی ۔

IndexOf(int Char) طریقہ کی مثال

public class Main {
  public static void main(String[] args) {
    String greetings = "Hello World";

    System.out.println(greetings.indexOf("o"));

    // 4
  }
}
اوپر والے کوڈ میں، ہمیں کریکٹر "o" کا انڈیکس واپس آیا جو کہ 4 ہے۔ ہمارے پاس دو حروف "o" ہیں، لیکن صرف پہلے والے کی انڈیکس ہی واپس کی گئی۔ مندرجہ ذیل مثال میں ہم دیکھیں گے کہ ہم دوسرے "o" کے انڈیکس کو کیسے واپس کر سکتے ہیں۔ اگر آپ سوچ رہے ہیں کہ ترتیب نمبر کیسے اخذ کیے جاتے ہیں، تو آپ دیکھیں گے کہ سٹرنگ کے پہلے کریکٹر کا انڈیکس صفر ہے، دوسرے کریکٹر کا انڈیکس ایک ہے، وغیرہ۔

indexOf(int Char, Int fromIndex) طریقہ کی مثال

یہاں ایک مثال ہے جس میں int indexOf(int char, int fromIndex) طریقہ کی وضاحت کی گئی ہے ۔
public class Main {
  public static void main(String[] args) {
    String greetings = "Hello World";

    System.out.println(greetings.indexOf("o", 5));

    // 7
  }
}
اوپر کی مثال میں، ہم پانچویں انڈیکس پر کام شروع کرنے کے لیے indexOf کا طریقہ بتاتے ہیں۔ H => انڈیکس 0 e => انڈیکس 1 l => انڈیکس 2 l => انڈیکس 3 0 => انڈیکس 4 نوٹ کریں کہ انڈیکس 5 "W" کیریکٹر نہیں ہے۔ پانچواں انڈیکس "ہیلو" اور "ورلڈ" کے درمیان کی جگہ ہے۔ اس طرح، اس کوڈ میں، پانچویں انڈیکس سے پہلے کے دیگر تمام حروف کو نظر انداز کر دیا جائے گا۔ 7 کو دوسرے حرف "o" کے اشاریہ کے طور پر واپس کیا جاتا ہے۔

Int indexOf(String Str) طریقہ کی مثال

مندرجہ ذیل مثال میں، ہم سمجھیں گے کہ پبلک int indexOf(String str) طریقہ کس طرح کام کرتا ہے ، جو سب اسٹرنگ کا انڈیکس لوٹاتا ہے۔
public class Main {
  public static void main(String[] args) {
    String motivation = "Coding can be difficult but don't give up";

    System.out.println(motivation.indexOf("be"));

    // 11
  }
}
میں حیران ہوں کہ ہم 11 واپس کیسے آئے؟ آپ کو یہ سمجھنے کے لیے آخری حصے کا جائزہ لینا چاہیے کہ اشاریہ جات کو کس طرح شمار کیا جاتا ہے اور کس طرح ذیلی اسٹرنگ کے درمیان خالی جگہوں کو بھی اشاریہ شمار کیا جاتا ہے۔ نوٹ کریں کہ جب سب اسٹرنگ کو پیرامیٹر کے طور پر پاس کیا جاتا ہے، تو لوٹا ہوا انڈیکس سب اسٹرنگ میں پہلے کریکٹر کا انڈیکس ہوتا ہے۔ 11 حرف "b" کا اشاریہ ہے۔

indexOf(String Str, Int fromIndex) طریقہ کی مثال

آخری طریقہ عوامی int indexOf(String str, int fromIndex) ہے - جیسا کہ عوامی int indexOf(int char, int fromIndex) طریقہ ۔ یہ مخصوص پوزیشن سے انڈیکس لوٹاتا ہے۔
public class Main {
  public static void main(String[] args) {
    String motivation = "The for loop is used for the following";

    System.out.println(motivation.indexOf("for", 5));

    // 21
  }
}
اس مثال میں، ہم نے وضاحت کی ہے کہ طریقہ کار کو اپنا کام پانچویں انڈیکس سے شروع کرنا چاہیے، جو کہ پہلے سبسٹرنگ کے بعد آتا ہے۔ 21 for کے دوسرے سبسٹرنگ کا اشاریہ ہے۔ آخر میں، جب ہم ایک کریکٹر یا سب اسٹرنگ پاس کرتے ہیں جو اسٹرنگ میں نہیں ہے، تو indexOf طریقہ -1 لوٹ آئے گا۔ یہاں ایک مثال ہے:
public class Main {
  public static void main(String[] args) {
    String motivation = "The for loop is used for the following";

    System.out.println(motivation.indexOf("code"));

    // -1
  }
}

نتیجہ

اس مضمون میں، ہم نے واضح مثالوں کے ساتھ چار indexOf طریقوں کو استعمال کرنے کا طریقہ سیکھا۔ ہم نے یہ بھی دیکھا کہ ان طریقوں میں سے ہر ایک کا نحو کیسا لگتا ہے اور وہ انڈیکس کو واپس کرنے کے لیے کیسے کہتے ہیں۔ اس کے علاوہ، ہم یہ جاننے کے قابل تھے کہ جب ایک غیر موجود کردار یا ذیلی اسٹرنگ کو پیرامیٹر کے طور پر پاس کیا جاتا ہے تو کیا ہوتا ہے۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION