JavaRush /جاوا بلاگ /Random-SD /ڪافي بريڪ #116. جاوا ۾ فنڪشن پوائنٽر ڪيئن استعمال ڪجي. جا...

ڪافي بريڪ #116. جاوا ۾ فنڪشن پوائنٽر ڪيئن استعمال ڪجي. جاوا ۾ indexOf - جاوا ۾ اسٽرنگ جي انڊيڪس ڪيئن ڳولھيو

گروپ ۾ شايع ٿيل

جاوا ۾ فنڪشن پوائنٽر ڪيئن استعمال ڪجي

ماخذ: Dev.to Pointers اهي شيون آهن جيڪي ميموري ايڊريس کي محفوظ ڪن ٿيون ۽ ميموري کي محفوظ ڪري سگھن ٿيون سڌو سنئون ٽارگيٽ اعتراض، صف، يا متغير ايڊريس ڏانهن اشارو ڪندي قدر ذريعي گذرڻ بدران. بدقسمتي سان، جاوا ۾ اشارو جو ڪو به "حقيقي" تصور ناهي. پر خوش قسمتي سان اسان لاءِ، طريقو حوالن جو استعمال ڪندي هڪ ڪم ڪار آهي جيڪو حقيقي شيءِ جي ويجهو آهي. ڪافي بريڪ #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);
}
ايندڙ قدم لفافي انٽرفيس متغير ٺاهڻ ۽ انهن کي طريقن کي تفويض ڪرڻ آهي. variables ڪم ڪندو هڪ پوائنٽر جي طور تي فنڪشن کي محفوظ ڪرڻ يا عمل ڪرڻ لاء.
// 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 سان سڏ ڪيل طريقو 2 انٽيجر 2 سان سڏيو ويو طريقو 3 انٽيجر 5 سان

Lambda ايڪسپريس استعمال ڪندي

لامبڊا ايڪسپريس استعمال ڪندي طريقي جا حوالا تفويض ڪري سگھجن ٿا.
// 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 طريقن جي نحو بابت ڄاڻنداسين . اسان مثالن تي پڻ نظر ڪنداسين جيڪي توھان کي سمجھڻ ۾ مدد ڏين ٿا ۽ مؤثر طريقي سان استعمال ڪريو ھڪڙي ڪردار جي انڊيڪس يا جاوا ڪوڊ ۾ سبسٽرنگ جي ڳولا لاءِ. ڪافي بريڪ #116.  جاوا ۾ فنڪشن پوائنٽر ڪيئن استعمال ڪجي.  جاوا ۾ indexOf - جاوا ۾ اسٽرنگ جي انڊيڪس ڪيئن ڳولھيو - 2

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) جو طريقو مثال

آخري طريقو آهي Public int indexOf(String str, int fromIndex) - ساڳيو ئي Public 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 لاءِ جي ٻئي سبسٽرنگ جو انڊيڪس آھي. آخرڪار، جڏهن اسان هڪ ڪردار يا سبسٽنگ پاس ڪندا آهيون جيڪو اسٽرنگ ۾ نه آهي، انڊيڪس آف طريقو -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