CodeGym /وبلاگ جاوا /Random-FA /جاوا تکرار کننده
John Squirrels
مرحله
San Francisco

جاوا تکرار کننده

در گروه منتشر شد
سلام! در درس امروز، در مورد Java Iterator صحبت خواهیم کرد. تصور کنید که به کتابخانه می روید و می خواهید کتاب خاصی را پیدا کنید. چگونه آن را انجام دهید؟ اگر غیر داستانی است، سیستم اعشاری دیویی وجود دارد. اگر داستانی است، آنها به ترتیب حروف الفبا بر اساس نام خانوادگی خود مرتب شده اند. هر چیزی که به دنبال آن هستید، در یک مقطع زمانی، باید کتاب‌ها را یکی یکی مرور کنید تا آنچه را که به دنبالش هستید بیابید. هر زمان که مجموعه ای از چیزها در جاوا دارید، خواه در یک آرایه ، یک ArrayList ، یک صف یا یک لیست ذخیره شده باشد ، چگونه ارزش خاصی پیدا می کنید؟ در یک نقطه، شما باید هر یک از عناصر را یکی یکی مرور کنید. این همان چیزی است که تکرار کننده جاوا برای آن است.نحوه استفاده از Java Iterator: آموزش مختصر - 1

Iterator در جاوا چیست؟

تکرار کننده در جاوا چیست؟ این راهی برای نگاه کردن به هر عنصر در یک مجموعه است. و منظور ما از مجموعه، هر چیزی در کلاس Collection است . این شامل:
  • ArrayList
  • HashSet
  • LinkedHashSet
  • LinkedList
  • صف اولویت
  • بردار
  • و خیلی های دیگر…
همچنین شامل واسط‌های مختلف برای آن کلاس‌ها، مانند Set ، List ، Queue ، Dequeue و Sorted Set است. Iterator<E> روش رابط عمومی کلاس Interface Iterator<E> است . در جاوا 1.2 ایجاد شد و جایگزین Enumeration به عنوان راهی برای بررسی عناصر متوالی در یک مجموعه شد.

چرا نباید از For Loops به عنوان Iterator در جاوا استفاده کرد؟

یکی از اولین روش هایی که به همه آموزش داده می شود از طریق یک مجموعه در جاوا تکرار کنند، حلقه است. به نظر می رسد این است:

class Main {
  public static void main(String[] args) {
    int exampleArray[] = new int[10];

    //fill array with data

    for(int x = 0; x < exampleArray.length; x++) {
      System.out.println("Content of element " + x + "is: " + exampleArray[x]);
    }
  }
}
خروجی لیستی خواهد بود که به شرح زیر است:

Content of element 0 is: 0
Content of element 1 is: 1
Content of element 2 is: 2
etc.…
این موارد کاربردهای خود را دارد، اما اگر مجموعه عناصر را در یک سیستم مبتنی بر فهرست ذخیره نکند، چه اتفاقی می‌افتد؟ به عنوان مثال، مجموعه ها به طور معمول هیچ ترتیبی ندارند. بنابراین توصیه می شود از تمرین استفاده از حلقه for به عنوان تکرار کننده در جاوا خارج شوید و به جای آن از کلاس Iterator<E> استفاده کنید . در اینجا چند نمونه تکرار کننده جاوا آورده شده است.

نحوه استفاده از Iterator در جاوا

در اینجا چند نمونه از نحوه استفاده از iterator در جاوا آورده شده است. هنگام استفاده از کلاس iterator، سه راه برای عبور از یک مجموعه وجود دارد. می توانید از یک حلقه while() ، یک حلقه for() و یک حلقه ()forEach استفاده کنید. توجه داشته باشید که این حلقه for با چیزی که قبلا در مورد آن صحبت کردیم متفاوت است. در اینجا سه ​​مثال مختلف تکرار کننده جاوا آورده شده است. ابتدا، بیایید مجموعه را برای تکرار تنظیم کنیم.

import java.util.*; // imports ArrayList, Collection and Iterator

class Main {
  public static void main(String[] args) {
    Collection<String> example = new ArrayList<String>();

    example.add("Item 1");
    example.add("Item 2");
    example.add("Item 3");
    example.add("Item 4");
  }
}
این یک مجموعه ساده است که از یک ArrayList تشکیل شده است که ما چهار مورد را در آن بارگذاری کرده ایم. حال بیایید به سه روش استفاده از کلاس Iterator برای عبور از ArrayList نگاه کنیم .

حلقه while().


Iterator<String> iterator = example.iterator();

while (iterator.hasNext()) {
   System.out.println("Element Value= " + iterator.next());
}
این حلقه while() از متد بولی .hasNext() از کلاس Iterator استفاده می کند تا ببیند آیا عنصر آینده وجود دارد یا خیر. اگر پیش شرط درست باشد، ادامه می یابد. اگر به صورت false برگردد، حلقه به پایان می رسد. بخش کلیدی در اینجا این است که متدهای .hasNext() و .next() هر دو بررسی اولیه عنصر اول را انجام می دهند. اگر مجموعه خالی باشد و عنصر اولی وجود نداشته باشد، متد برای .hasNext() false برمی گرداند و یک NoSuchElementException برای متد ()next .

برای حلقه


for (Iterator<String> iterator = example.iterator(); iterator.hasNext();) {
  System.out.println("Element Value= " + iterator.next());
}
به نظر می رسد که این حلقه سنتی تر است. از متد ()hasNext به عنوان بخش بررسی و تغییر شرایط استفاده می کند . مقداردهی اولیه فراخوانی Iterator است.

برای: هر حلقه


for (String s : example) {
  System.out.println("Element Value= " + s);
}
حلقه For: هر حلقه یک حلقه for است، اما اگر نمی دانید چگونه آن را بخوانید، ممکن است کمی گیج کننده باشد. نحو یک حلقه For: هر حلقه for (data_type variableName : collectionName){ body} است . این برای: هر حلقه چند اشکال دارد. اول، فقط می تواند مجموعه را در یک جهت طی کند. دوم، شما باید از طریق هر عنصر تکرار کنید. شما نمی توانید از هیچ یک از آنها بگذرید. اما به عنوان یک تکرار کننده لیست مناسب در جاوا، بهترین گزینه است. از جنبه مثبت، خواندن حلقه for: هر یک بسیار آسان است و هنگامی که آن را بدانید، اشتباه کردن دشوار است. اگر می‌پرسید خروجی سه حلقه تکرارکننده چیست، همه آنها یکسان هستند:

Element Value= Item 1
Element Value= Item 2
Element Value= Item 3
Element Value= Item 4 

نحوه استفاده از Iterator در جاوا For Maps

نقشه‌ها روشی محبوب برای ذخیره داده‌ها هستند، اما چون مجموعه را گسترش نمی‌دهند ، نمی‌توانید از تکرارکننده‌های قبلی برای پیمایش مستقیم نقشه استفاده کنید. بنابراین چگونه می توان از یک تکرار کننده در جاوا برای عبور از Maps و HashMap s استفاده کرد؟ چهار روش خوب تکرار کننده نقشه جاوا وجود دارد. ما آنها را به صورت جداگانه پوشش می دهیم. ابتدا بیایید یک نقشه با یک سری مقادیر بارگذاری کنیم.

import java.util.*; //imports Map and HashMap

class Main {
  public static void main(String[] args) {
    Map<String, String> example = new HashMap<String, String>();

    example.put("alpha", "one");
    example.put("beta", "two");
    example.put("gamma", "three");

  }
}

روش تکرار کننده هاشمپ جاوا: forEach(action)


example.forEach((k,v) -> System.out.println("Key: "+ k + ", Value: " + v));
این روش از عبارت lambda برای تکرار استفاده می کند. عملگر لامبدا متد forEach() است و بدنه مقادیر را چاپ می کند. این از یک عملگر چند پارامتری استفاده می کند. این سریعترین و تمیزترین روش برای تکرار کننده نقشه در جاوا 8 است.

روش تکرار کننده هاشمپ جاوا: حلقه For:Each().


for (Map.Entry<String, String> iterate : example.entrySet()) {
  System.out.println("Key: " + iterate.getKey() + ", Value: " + iterate.getValue());
}
این از دستور For:Each برای فراخوانی متد enterSet() برای برگرداندن مجموعه ای استفاده می کند که کلید و مقدار را به عنوان عناصر آن دارد. بعلاوه، هنگام استفاده از متد .Entry() ، اشیاء فقط زمانی درست هستند که این تکرار در حال وقوع است.

روش جاوا Hashmap Iterator: Map.Entry<k, v>


Iterator<Map.Entry<String, String>> iterator = example.entrySet().iterator();

while(iterator.hasNext()){
  Map.Entry<String, String> element = iterator.next();
  System.out.println("Key: " + element.getKey() + ", Value: " + element.getValue());
)
این روش دوباره نقشه را به مجموعه ای تبدیل می کند تا از Collections Iterator و متدها استفاده کند. برای این سه روش تکرار کننده، بازگشت به این صورت است:

Key: alpha, Value: one
Key: beta, Value: two
Key: gamma, Value: three
Java Hashmap Iterator Method: keySet() and values()
for (String key : example.keySet()) {
  System.out.println("Key: " + key);
}
for (String value : example.values()) {
  System.out.println("Value: " + value);
}
این یکی عناصر را به روش دیگری برمی گرداند. ابتدا تمام کلیدها را به ترتیب و سپس تمام مقادیر را برمی گرداند:

Key: alpha
Key: beta
Key: gamma
Value: one
Value: two
Value: three
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION