ArrayList در Java
یک ArrayList<String> بهنام tags بسازید، بعد tags.add("oak"); و سپس tags.add("pine"); را صدا بزنید و لیست را با System.out.println(tags); چاپ کنید. Shelf.java را کامپایل کنید و java Shelf را اجرا کنید. صفحه باید یک خط نشان دهد: [oak, pine]. براکتهای مربعی و ویرگول مال چاپ خود Java از لیستاند. لیست را با add بزرگ میکنید. همان لیستِ در حال رشد بعد از import کار این صفحه است.
فهرستی که میتواند رشد کند
روی صفحهٔ arrays یک String[] تعداد ثابتی خانه در آکولاد داشت. روی آن آرایه نمیتوانستید add صدا بزنید. ArrayList نگهدارندهٔ دیگری است. خالی میسازید، بعد با add مقدار میگذارید. هر add لیست را یکی بزرگتر میکند. خط چاپ همهٔ مقدارهای فعلی را داخل براکت مربعی، با ویرگول و فاصله، نشان میدهد.
Shelf.java را باز کنید. نام کلاس public را Shelf نگه دارید تا با نام فایل یکی باشد. باقیماندهٔ import kit.Bell; و Bell.ring(); و package kit; و هر فراخوانی Porch یا Lobby از صفحات قبل را پاک کنید. آنها مال داستان ماژول Classes بودند. این صفحه Collections را باز میکند. هر Scanner و nextLine و خواندن صفحهکلید را هم پاک کنید. برنامه نباید منتظر تایپ بماند.
نزدیک بالای Shelf.java، بالای public class Shelf، بنویسید:
import java.util.ArrayList;
این import نوع ArrayList را مثل import kit.Bell; در صفحهٔ import به نام کوتاه میرساند. بدون این خط، javac روی این صفحه نام کوتاه ArrayList را نمیبیند. املای بستهٔ java.util و کلاس ArrayList را دقیق بنویسید. اینجا import java.util.*; را الزام نکنید — یک import دقیق کافی است.
داخل main لیست را بسازید:
ArrayList<String> tags = new ArrayList<String>();
داخل براکت زاویهای String است چون این درس کلمه نگه میدارد. نام tags را همانطور که در فایل نگه داشته میشود تایپ کنید. فراخوانی new ArrayList<String>() یک شیء لیست خالی میسازد. در این لحظه لیست صفر مقدار دارد. اگر الان چاپ کنید [] میبینید، ولی فایل نگه داشتهشده قبل از چاپ کلمه اضافه میکند.
اول oak، بعد pine، بعد چاپ
در یک خط صدا بزنید tags.add("oak");. در خط بعد tags.add("pine");. هر صدا یک کلمهٔ داخل نقلقول ذخیره میکند. ترتیب برای صفحه مهم است: اول oak، بعد pine. در فایل نگه داشتهشده جایشان را عوض نکنید. روی فایل درس این صفحه کلمهٔ سوم اضافه نکنید — دو add برای دیدن رشد و شکل چاپ کافی است.
بعد بنویسید:
System.out.println(tags);
خودِ نام لیست را بدهید. دور tags نقلقول نگذارید. بهعنوان مسیر درس System.out.println("oak"); را دستی ننویسید — نکته این است که شیء لیست هر دو کلمه را حمل میکند و با هم چاپ میکند. قبل از کامپایل ذخیره کنید.
import java.util.ArrayList;
public class Shelf {
public static void main(String[] args) {
ArrayList<String> tags = new ArrayList<String>();
tags.add("oak");
tags.add("pine");
System.out.println(tags);
}
}
از پوشهای که Shelf.java در آن است اجرا کنید javac Shelf.java. وقتی پرانتز و آکولاد و براکت زاویهای و نقطهویرگول جور باشند، خودِ javac خطی نمینویسد. بعد java Shelf را بزنید — نه java Shelf.java و نه java ArrayList. پسوند .java را از فرمان اجرا بردارید. کلاسی را شروع کنید که main دارد.
برنامه باید یک خط چاپ کند و بایستد: [oak, pine]. منتظر تایپ شما نمیماند. اگر ترمینال منتظر ورودی صفحهکلید ماند، هنوز صدای nextLine از تمرین قدیمی در فایلی مانده است. آن را پاک کنید و ساخت ArrayList، دو خط add، و System.out.println(tags); را نگه دارید.
یکبار اجرا را راه بروید. Java از Shelf.main شروع میکند. import از قبل گفته کدام ArrayList مد نظر است. خط new لیست خالی میسازد. اولین add مقدار oak را میگذارد. دومین add مقدار pine را میگذارد. خط چاپ از لیست میخواهد محتوایش را نشان دهد. صفحه [oak, pine] را نشان میدهد. چیز دیگری نباید چاپ شود. اگر ding یا 9 یا ok دیدید، هنوز برنامهٔ قدیمی Porch یا Lobby یا Pier یا Yard را اجرا میکنید. بروید سراغ java Shelf.
اگر javac بگوید ArrayList را پیدا نمیکند، خط import نیست، غلط املا دارد، یا بعد از public class Shelf آمده است. import java.util.ArrayList; را بالای خط کلاس بگذارید. اگر بدون نقلقول بنویسید tags.add(oak);، javac واژهٔ oak را مثل یک نام میبیند که وجود ندارد. دور هر کلمه نقلقول بگذارید. اگر بنویسید String[] tags = new ArrayList<String>();، نوعها جور نیستند و javac رد میکند — در این صفحه دو طرف خط ساخت را ArrayList<String> نگه دارید.
آرایهٔ ثابت کنار لیستِ در حال رشد
یک تضاد کوتاه صفحهٔ arrays را یادآوری میکند بدون اینکه وارد اجرای درس شود. String[] ثابت هنوز کار میکند. با add رشد نمیکند.
public class Shelf {
public static void main(String[] args) {
String[] trees = {"oak", "pine"};
System.out.println(trees[0]);
}
}
آن شکل تضاد را فقط برای یادآوری آرایهٔ ثابت کامپایل و اجرا کنید. صفحه oak را نشان میدهد — یک خانه — نه [oak, pine]. هیچ فراخوانی add نیست. برای نگه داشتن کلمهٔ سوم در آرایهٔ ثابت باید آرایهٔ تازهای با سه خانه بسازید. فایل درس ArrayList همانی است که import java.util.ArrayList; دارد، دو add، و System.out.println(tags);. فایل آرایهٔ ثابت فقط یادآوری است، نه مسیر کوئیز. trees.add("elm") را داخل آن تضاد قاطی نکنید — String[] متد add ندارد و javac رد میکند.
روبهروی هم
یک جدول کوتاه تفاوت را روشن نگه میدارد.
📊 ArrayList vs String array
| Piece | On this page |
|---|---|
| create | ArrayList<String> tags = new ArrayList<String>(); |
| grow | tags.add("oak"); then tags.add("pine"); |
| print list | System.out.println(tags); → [oak, pine] |
| fixed array | String[] trees = {"oak", "pine"}; — no add |
جدول فقط یادآوری است. قطعههایی که برای فایل درس نگه میدارید import، خط ساخت ArrayList، دو add، و چاپ tags هستند. |
در مقایسه با import و با arrays
روی صفحهٔ import، بعد از import kit.Bell; کلاس Porch صدا میزد Bell.ring();. آن مسیر بهعنوان تاریخچه هنوز درست است. این صفحه نقش را به Shelf و import را به java.util.ArrayList عوض میکند. باقیماندهٔ Bell.ring(); درس دیگری است. برای این صفحه ArrayList<String> tags، دو خط add، و چاپ لیست را نگه دارید.
روی صفحهٔ arrays آکولاد یک String[] ثابت پر میکرد. برای اندازهٔ معلوم هنوز کار میکند. این درس ArrayList را انتخاب میکند تا رشد با add و یک چاپ از کل لیست را ببینید. در یک دموی Shelf روی این صفحه plants[0] و tags.add("oak") را قاطی نکنید. یک مسیر روشن کافی است: import، ساخت، add، add، چاپ.
وقتی بعداً به get یا size یا remove نیاز دارید، صفحهٔ بعد — متدهای list — آن صداها را پوشش میدهد. اینجا با add و چاپ کل لیست بمانید. روی این صفحه حلقه روی لیست را الزام نکنید؛ چاپ خودِ شیء لیست برای دیدن هر دو کلمه کافی است.
چه چیزی برای متدهای list میماند
این صفحه Collections را با فهرستی که میتواند رشد کند باز میکند. صفحهٔ بعد صداهای رایج list مثل خواندن یک خانه یا پرسیدن چند مقدار داخل لیست است را کار میکند. اینجا با add و چاپ کامل لیست بمانید. روی این صفحه tags.get(0) را الزام نکنید مگر از قبل بلد باشید؛ هدف درس لیستِ در حال رشد و صفحهٔ [oak, pine] است.
وقتی فایلهای قدیمی Porch.java یا Lobby.java هنوز نزدیکاند، اگر فرمان اجرا را گیج نمیکنند همان بگذارید، یا فقط وقتی گیج میکنند پاکشان کنید. بعد از کامپایل فایل ArrayList این درس، java Shelf را اجرا کنید.
قبل از متدهای list
میتوانید java.util.ArrayList را import کنید، ArrayList<String> tags بسازید، tags.add("oak"); و tags.add("pine"); را صدا بزنید، بعد tags را چاپ کنید. Shelf.java را کامپایل کنید و java Shelf را اجرا کنید. صفحه [oak, pine] را نشان میدهد. لیست با add رشد کرد. صفحهٔ بعد متدهای list است، جایی که به یک مقدار میرسید یا از لیست میپرسید چقدر طول دارد.
import را بالای کلاس نگه دارید. هر دو add را قبل از چاپ نگه دارید. برای این درس java Shelf را اجرا کنید. این سه عادت ایستگاه بازرسی این صفحه قبل از رفتن جلو هستند. وقتی بعد از دو add صفحه [oak, pine] را نشان داد، ArrayList کار این درس را کرده و برای موضوع بعد آمادهاید.
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود