پیمایش در Java
یک ArrayList<String> بهنام tags بسازید، oak بعد pine را add کنید، و لیست را با for (String t : tags) راه بروید و هر واژه را چاپ کنید. Lane.java را کامپایل کنید و java Lane را اجرا کنید. صفحه باید دو خط نشان دهد: oak، بعد pine. هر دور حلقه یک مقدار چاپ میکند. راه رفتن روی همهٔ مقدارهای مجموعه کار این صفحه است.
یکبار روی هر مقدار راه بروید
روی صفحهٔ HashSet بدون حلقه size و contains را چک میکردید. روی صفحهٔ for-each زودتر در کورس روی آرایهٔ ثابت راه میرفتید. این صفحه همان شکل for-each را روی ArrayList راه میبرد، بعد پیمایش اندیسی با get را نشان میدهد. اول مجموعه با add پر میشود. حلقه بعد از ذخیرهٔ مقدارها میآید.
Lane.java را باز کنید. نام کلاس public را Lane نگه دارید تا با نام فایل یکی باشد. دموهای باقیماندهٔ HashSet، contains، Bin، Desk و put/get مربوط به map را پاک کنید. هر Scanner یا nextLine را هم پاک کنید. برنامه نباید منتظر تایپ بماند.
نزدیک بالا، بالای public class Lane، بنویسید:
import java.util.ArrayList;
داخل main لیست را بسازید و دو کلمه add کنید:
ArrayList<String> tags = new ArrayList<String>();
tags.add("oak");
tags.add("pine");
بعد هدر و بدنهٔ for-each را بنویسید:
for (String t : tags) { System.out.println(t); }
دونقطه بین نوع-و-نام عنصر و مجموعه مینشیند. هر دور، t را روی واژهٔ بعدی میگذارد. در دموی اول شمارنده ننویسید. قبل از کامپایل ذخیره کنید.
import java.util.ArrayList;
public class Lane {
public static void main(String[] args) {
ArrayList<String> tags = new ArrayList<String>();
tags.add("oak");
tags.add("pine");
for (String t : tags) {
System.out.println(t);
}
}
}
از پوشهای که Lane.java در آن است اجرا کنید javac Lane.java. وقتی پرانتز و آکولاد و براکت زاویهای و دونقطه و نقطهویرگول جور باشند، خودِ javac خطی نمینویسد. بعد java Lane را بزنید — نه java Lane.java و نه java ArrayList. پسوند .java را از فرمان اجرا بردارید.
برنامه باید دو خط چاپ کند و بایستد: oak، بعد pine. منتظر تایپ شما نمیماند. اگر ترمینال منتظر ورودی صفحهکلید ماند، هنوز صدای nextLine از تمرین قدیمی در فایلی مانده است. آن را پاک کنید و ساخت، دو خط add، و for-each را نگه دارید.
یکبار اجرا را راه بروید. Java از Lane.main شروع میکند. لیست oak بعد pine را دارد. دور اول t را روی oak میگذارد و oak چاپ میکند. دور دوم t را روی pine میگذارد و pine چاپ میکند. بعد حلقه تمام میشود. چیز دیگری نباید چاپ شود. اگر فقط 2 دیدید، بهجای راه رفتن روی مقدارها size() را چاپ کردهاید. اگر یک خط [oak, pine] دیدید، خودِ شیء لیست را چاپ کردهاید نه هر عنصر — بدنهٔ for-each را println(t) نگه دارید. اگر true یا leaf دیدید، هنوز دموی Bin یا Desk در حال اجراست — بروید سراغ java Lane.
اگر javac بگوید ArrayList را پیدا نمیکند، import نیست یا بعد از خط کلاس آمده است. import java.util.ArrayList; را بالای public class Lane بگذارید. اگر for (String t : tags) را بدون آکولاد بنویسید و بعداً چند خط بدنه داشته باشید، روی این صفحه بدنه را یک println داخل آکولاد نگه دارید تا شکل روشن بماند. املای نام مجموعه بعد از دونقطه باید با لیستی که ساختید یکی باشد: tags، نه نام باقیماندهٔ slots از صفحهٔ for-each روی آرایه.
پیمایش اندیسی با get
دموی دوم همان لیست را با for شمارشی و get راه میرود. مسیر شمارهٔ خانه را کنار مسیر for-each میبینید.
import java.util.ArrayList;
public class Lane {
public static void main(String[] args) {
ArrayList<String> tags = new ArrayList<String>();
tags.add("oak");
tags.add("pine");
for (int i = 0; i < tags.size(); i++) {
System.out.println(tags.get(i));
}
}
}
همانطور کامپایل و اجرا کنید. صفحه دوباره oak بعد pine را نشان میدهد. هدر از i برابر 0 شروع میکند تا وقتی i < tags.size(). هر دور بدنه با tags.get(i) یک خانه را میخواند. این عادت get صفحهٔ list-methods داخل حلقه است. وقتی روی صفحه به شمارهٔ اندیس نیاز ندارید، فایل for-each را مسیر درس اول بگیرید. فایل اندیسی را نگه دارید تا ثابت شود هر دو پیمایش برای این لیست همان دو خط را چاپ میکنند. اگر اشتباهی i را از 1 شروع کنید، اولین واژهٔ چاپشده pine میشود و oak جا میماند — برای پیمایش کامل i را از 0 نگه دارید.
برای صفحهٔ کوئیز این درس به ترتیب چاپ HashSet تکیه نکنید. set قول نمیدهد oak قبل از pine باشد. دموهای ArrayList ترتیب پایدار برای دو خطی که انتظار دارید نگه میدارند. برای فایلهای درس با ArrayList بمانید تا صفحهٔ کوئیز پیشبینیپذیر بماند.
فقط size پیمایش نیست
فایل سوم عادت باقیماندهٔ چاپ فقط شمارش را نشان میدهد. روی صفحهٔ HashSet مفید بود، ولی iterating نیست.
import java.util.ArrayList;
public class Lane {
public static void main(String[] args) {
ArrayList<String> tags = new ArrayList<String>();
tags.add("oak");
tags.add("pine");
System.out.println(tags.size());
}
}
آن فایل 2 چاپ میکند — یک عدد، نه واژهها. فقط بهعنوان تضاد بهکارش ببرید. فایلهای نگه داشتهٔ درس iterating هر مقدار را با for-each یا با get اندیسی چاپ میکنند. فایل فقط-size را بهعنوان مسیر کوئیز برای صفحهٔ دوخطی نفرستید.
در مقایسه با for-each روی آرایه و با چکهای HashSet
قبلاً for-each خانههای int[] یا String[] را راه میرفت. اینجا دونقطه هنوز کار میکند، ولی نام سمت راست یک ArrayList است. روی صفحهٔ HashSet، size و contains بدون چاپ همهٔ مقدارها جواب میدادند. این صفحه همهٔ مقدارها را چاپ میکند. دموی باقیماندهٔ contains از Bin درس دیگری است. برای این صفحه Lane را با for-each که oak بعد pine چاپ میکند نگه دارید.
وقتی فایلهای قدیمی Bin.java هنوز نزدیکاند، اگر فرمان اجرا را گیج نمیکنند همان بگذارید، یا فقط وقتی گیج میکنند پاکشان کنید. بعد از کامپایل فایل پیمایش این درس، java Lane را اجرا کنید.
چه چیزی برای wrappers میماند
این صفحه مقدارهای مجموعه را راه میرود. صفحهٔ بعد نوعهای Wrapper مثل Integer کنار int اولیه را وقتی مجموعه به شیء نیاز دارد پوشش میدهد. اینجا با for-each و get اندیسی روی ArrayList بمانید. روی این صفحه دموی wrapper را الزام نکنید.
قبل از wrappers
میتوانید java.util.ArrayList را import کنید، oak و pine را add کنید، و هر واژه را با for (String t : tags) چاپ کنید. همچنین میتوانید با for (int i = 0; i < tags.size(); i++) و tags.get(i) راه بروید. Lane.java را کامپایل کنید و java Lane را اجرا کنید. صفحه oak بعد pine را نشان میدهد. صفحهٔ بعد wrappers است، جایی که نوعهای شیء کنار اولیه برای ذخیره در مجموعه میایستند.
import را نگه دارید. دو add را قبل از حلقه نگه دارید. for-each را بهعنوان پیمایش درس اول نگه دارید. این عادتها ایستگاه بازرسی قبل از رفتن جلو هستند. وقتی بعد از for-each هر دو خط چاپ شد، iterating کار این درس را کرده و برای موضوع بعد آمادهاید.
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود