آموزش Vector ،LinkedList و Stack در جاوا، جامع و کاربردی
جلسات دوره
مهدی عباسی
مهدی عباسی هستم، مسلط به حداقل ۲۰ زبان مطرح برنامه نویسی به صورت پیشرفته، مدیر عامل شرکت آریا نرم افزار و بنیانگذار آکادمی درسمن، مسلط به تدریس دروس تخصصی کاردانی و کارشناسی کامپیوتر، پایگاه داده ها، برنامه نویسی پیشرفته، مبانی برنامه نویسی، مباحث ویژه طراحی وب و .... مشاهده رزومه
آموزش Vector ، LinkedList و Stack در جاوا، جامع و کاربردی
در جلسه گذشته انواع لیستها را توضیح دادیم و همچنین متدهای مشترک بین List ها را بررسی کردیم. در این جلسه می خواهیم متدهای هر کدام از لیست ها را بررسی کنیم.
متد های کلاس ArrayList
متد ensureCapacity
به کمک این متد میتوانیم سایز ArrayList را مشخص کنیم.
ArrayList<String> names=new ArrayList<>();
names.addAll(Arrays.asList("mehdi","ahmad","negin","zahra","mehran"));
names.ensureCapacity(1000);
متد trimToSize
این متد خانههای اضافه ArrayList را پاک میکند.
ArrayList<String> names=new ArrayList<>();
names.addAll(Arrays.asList("mehdi","ahmad","negin","zahra","mehran"));
names.trimToSize();
متد replaceAll
این متد یک UnaryOperator دریافت میکند و روی تمام عناصر ArrayList اعمال میکند. UnaryOperator یک اینترفیس جنریک درون جاوا است که یک متد به نام apply دارد و ورودی و خروجی این متد یکسان است.
class MyOperator implements UnaryOperator<String>{
@Override
public String apply(String s) {
return "*"+s+"#";
}
}
public class MainClass {
public static void main(String[] args) {
ArrayList<String> names=new ArrayList<>();
names.addAll(Arrays.asList("mehdi","ahmad","negin","zahra","mehran"));
names.replaceAll(new MyOperator());
System.out.println(names);
}
}
خروجی
[*mehdi#, *ahmad#, *negin#, *zahra#, *mehran#]
در بالا متدهای کاربردی ArrayList را توضیح دادیم و در ادامه میخواهیم متدهای LinkedList را بررسی کنیم.
ساختار LinkedList لیست پیوندی است یعنی هر عنصر، عنصر بعدی خودش را میشناسد و عناصر در کنار یکدیگر نیستند. همانطور که در جلسه گذشته توضیح دادیم بهتر است زمانی که زیاد به عملیات درج و حذف نیاز داریم از LinkedList استفاده کنیم.
نحوه تعریف LinkedList
LinkedList<String> linkedList=new LinkedList<>(Arrays.asList("mehdi","ahmad","negin","zahra","mehran"));
System.out.println(linkedList);
خروجی
[mehdi, ahmad, negin, zahra, mehran]
متد های کلاس LinkedList
متد addFirst
این متد یک عنصر را به ابتدای LinkedList اضافه میکند.
LinkedList<String> linkedList=new LinkedList<>(Arrays.asList("mehdi","ahmad","negin","zahra","mehran"));
linkedList.addFirst("narges");
System.out.println(linkedList);
خروجی
[narges, mehdi, ahmad, negin, zahra, mehran]
متد addLast
این متد یک عنصر به انتهای LinkedList اضافه می کند. بجای متد addLast میتوان از متد add هم استفاده کرد.
متد getFirst
این متد اولین عنصر LinkedList را برمیگرداند.
LinkedList<String> linkedList=new LinkedList<>(Arrays.asList("mehdi","ahmad","negin","zahra","mehran"));
System.out.println(linkedList.getFirst());
خروجی
mehdi
متد getLast
این متد آخرین عنصر LinkedList را برمیگرداند.
LinkedList<String> linkedList=new LinkedList<>(Arrays.asList("mehdi","ahmad","negin","zahra","mehran"));
System.out.println(linkedList.getLast());
خروجی
Mehran
در بالا متدهای کاربردی کلاس LinkedList را توضیح دادیم و در ادامه متدهای کلاس Vector را بررسی میکنیم.
در جلسه گذشته گفتیم Vector و ArrayList بر اساس ساختار آرایه ها ساخته شده اند. تفاوت Vector نسبت به ArrayList پشتیبانی از چند نخی است. و همچنین زمانی که سایز عناصر بیشتر از 128 واحد شود تعداد عناصر Vector دو برابر میشود و از لحاظ حافظه ArrayList فضای کمتری اشغال میکند و نگهداری داده ها درون ArrayList ایمن تر است.
نحوه تعریف Vector
LinkedList<String> linkedList=new LinkedList<>(Arrays.asList("mehdi","ahmad","negin","zahra","mehran"));
System.out.println(linkedList.getLast());
متد های کلاس Vactor
متد insertElementAt
این متد یک عنصر را در جای مشخصی از Vector اضافه میکند.
Vector<String> vector=new Vector<>(Arrays.asList("mehdi","ahmad","negin","zahra","mehran"));
vector.insertElementAt("narges",3);
System.out.println(vector);
خروجی
[mehdi, ahmad, negin, narges, zahra, mehran]
متد removeElementAt
این متد شماره خانه را دریافت میکند و مقدار آن را حذف میکند.
Vector<String> vector=new Vector<>(Arrays.asList("mehdi","ahmad","negin","zahra","mehran"));
vector.removeElementAt(1);
System.out.println(vector);
خروجی
[mehdi, negin, zahra, mehran]
در بالا متدهای مهم و کاربردی Vector را توضیح دادیم و در ادامه متدهای کلاس Stack را بررسی میکنیم.
همانطور که در جلسات گذشته توضیح دادیم Stack یا پشته نوع خاصی از لیست است و آخرین عنصری که درج میکنیم، اولین عنصری است که برمیداریم.
متد های کلاس Stack
متد push
این متد یک عنصر را به انتهای Stack اضافه میکند.
Stack<String> stack1=new Stack<>();
stack1.addAll(Arrays.asList("mehdi","ahmad","negin","zahra","mehran"));
stack1.push("narges");
System.out.println(stack1);
خروجی
[mehdi, ahmad, negin, zahra, Mehran, narges]
متد pop
این متد آخرین عنصر را برمیگرداند و از درون Stack پاک میکند.
Stack<String> stack1=new Stack<>();
stack1.addAll(Arrays.asList("mehdi","ahmad","negin","zahra","mehran"));
System.out.println(stack1.pop());
System.out.println(stack1);
خروجی
mehran
[mehdi, ahmad, negin, zahra]
کلاسهای اینترفیس List را در بالا توضیح دادیم و متدهای هر کدام از کلاسهای List(ArrayList, LinkedList, Vector, Stack) را بررسی کردیم.
یادگیری این دوره تنها با یک جلسه به پایان نمیرسد و شما میتوانید با تهیه این درس و سایر دروس ارائه شده در این دوره، به طور کامل به مباحث جاوا پیشرفته تسلط پیدا کنید.
یادگیری عمیق این درس نیازمند مطرح کردن سوال و دیدن جلسات بیشتر از این دوره است که شما میتوانید از دیگر دوستان خود که این دوره را تهیه کرده اند در انجمن برنامه نویسان جاوا سوالات خود را پرسیده و ابهاماتتان را برطرف کنید.
نظر شما در تصمیم دیگران اثرگذار است.
لطفا برای همراهان درسمن و بهتر شدن دوره نظر خود را بنویسید.