بررسی کامل کلاس Collections در جاوا
جلسات دوره
مهدی عباسی
مهدی عباسی هستم، مسلط به حداقل ۲۰ زبان مطرح برنامه نویسی به صورت پیشرفته، مدیر عامل شرکت آریا نرم افزار و بنیانگذار آکادمی درسمن، مسلط به تدریس دروس تخصصی کاردانی و کارشناسی کامپیوتر، پایگاه داده ها، برنامه نویسی پیشرفته، مبانی برنامه نویسی، مباحث ویژه طراحی وب و .... مشاهده رزومه
بررسی کامل کلاس Collections در جاوا
در جلسات گذشته اینترفیس Collection را توضیح دادیم و هر یک از فرزندان آن را بررسی کردیم. در این جلسه میخواهیم کلاس Collections را بررسی کنیم.
کلاس Collections درون پکیج java.util قرار دارد و متدهای استاتیک زیادی برای کار روی Collection دارد و میتوانیم برای برنامه هایی با کارایی بهتر و راحت تر از آنها استفاده کنیم.
در کلاس Collections سه ثابت تعریف شده است که میتوان با استفاده از آنها List, Map, Set های خالی تعریف کرد.
System.out.println(Collections.EMPTY_LIST);
System.out.println(Collections.EMPTY_MAP);
System.out.println(Collections.EMPTY_SET);
خروجی
[]
{}
[]
نکته: میتوان List, Map, Set را برابر این ثابت ها قرار داد اما نمیتوان درون آنها تغییراتی مانند اضافه کردن، حذف و ویرایش انجام داد.
متدهای کاربردی کلاس Collections
متد addAll
این متد برای اضافه کردن چندین عنصر به Collection ها استفاده میشود پارامتر اول کالکشن و پارامتر دوم عناصر را وارد کنید.
List<String> list1=new ArrayList<>();
list1.add("mehdi");
list1.add("ali");
Collections.addAll(list1,"amir","sara","negin","saeed");
System.out.println(list1);
خروجی
[mehdi, ali, amir, sara, negin, saeed]
متد sort
این متد برای مرتب سازی لیست ها استفاده میشود که میتوان به صورت نزولی و صعودی باشد.
List<String> list1=new ArrayList<>();
Collections.addAll(list1,"mehdi","ali","amir","sara","negin","saeed");
Collections.sort(list1);
System.out.println(list1);
خروجی
[ali, amir, mehdi, negin, saeed, sara]
در بالا لیست را به صورت صعودی مرتب کردیم. برای مرتب سازی لیست به صورت نزولی در تابع سازنده آن از متد Collections.reverseOrder() استفاده میکنیم.
Collections.sort(list1,Collections.reverseOrder());
System.out.println(list1);
خروجی
[sara, saeed, negin, mehdi, amir, ali]
متد reverse
این متد برای برعکس کردن عناصر لیست استفاده میشود.
List<String> list1=new ArrayList<>();
Collections.addAll(list1,"mehdi","ali","amir","sara","negin","saeed");
Collections.reverse(list1);
System.out.println(list1);
خروجی
[saeed, negin, sara, amir, ali, mehdi]
متد copy
این متد برای کپی کردن لیست درون لیست دیگر استفاده میشود. پارامتر اول لیست مقصد و پارامتر دوم لیست مبدا.
نکته: برای کپی کردن باید سایز لیست مقصد بزرگ تر یا مساوی سایز لیست مبدا باشد.
List<String> list1=new ArrayList<>();
Collections.addAll(list1,"mehdi","ali","amir","sara","negin","saeed");
List<String> list2=new ArrayList<>(Arrays.asList("aaaaa","bbbbb","ccccc","tttttt"));
Collections.copy(list1,list2);
System.out.println(list1);
خروجی
[aaaaa, bbbbb, ccccc,ttttt, negin, saeed]
متد fill
این متد تمام عناصر لیست را برابر یک مقدار ثابت قرار میدهد.
List<String> list1=new ArrayList<>();
Collections.addAll(list1,"mehdi","ali","amir","sara","negin","saeed");
Collections.fill(list1,"###");
System.out.println(list1);
خروجی
[###, ###, ###, ###, ###, ###]
متد rotate
این متد برای چرخاندن(شیفت دادن) لیست استفاده میشود.
List<String> list1=new ArrayList<>();
Collections.addAll(list1,"mehdi","ali","amir","sara","negin","saeed");
Collections.rotate(list1,3);
System.out.println(list1);
خروجی
[sara, negin, saeed, mehdi, ali, amir]
متد shuffle
این متد تمام عناصر لیست را به صورت تصادفی جابجا میکند.
List<String> list1=new ArrayList<>();
Collections.addAll(list1,"mehdi","ali","amir","sara","negin","saeed");
Collections.shuffle(list1);
System.out.println(list1);
خروجی
[amir, mehdi, negin, saeed, ali, sara]
متد swap
این متد برای جابجایی دو عنصر در لیست استفاده میکند.
List<String> list1=new ArrayList<>();
Collections.addAll(list1,"mehdi","ali","amir","sara","negin","saeed");
Collections.swap(list1,1,4);
System.out.println(list1);
خروجی
[mehdi, negin, amir, sara, ali, saeed]
متد unmodifiableList
این متد برای ایجاد یک نمونه از لیست به صورت غیر قابل تغییر است. به عنوان مثال زمانی که از متد unmodifableList استفاده میکنیم، اجازه اضافه کردن، ویرایش و حذف درون آن لیست را داریم.
List<String> list1=new ArrayList<>();
Collections.addAll(list1,"mehdi","ali","amir","sara","negin","saeed");
list1.remove("sara");
List<String> tempList=Collections.unmodifiableList(list1);
System.out.println(tempList);
خروجی
[mehdi, ali, amir, negin, saeed]
در کد زیر خروجی با خطا مواجعه میشود به دلیل اینکه درون لیست tempList داده ای اضافه کردیم.
List<String> list1=new ArrayList<>();
Collections.addAll(list1,"mehdi","ali","amir","sara","negin","saeed");
list1.remove("sara");
List<String> tempList=Collections.unmodifiableList(list1);
tempList.add("sara");
System.out.println(tempList);
متد replaceAll
این متد برای replace کردن عناصر لیست استفاده میشود.
List<String> list1=new ArrayList<>();
Collections.addAll(list1,"mehdi","ali","amir","sara","negin","mehdi","saeed");
Collections.replaceAll(list1,"mehdi","Mehdi");
System.out.println(list1);
خروجی
[Mehdi, ali, amir, sara, negin, Mehdi, saeed]
متد binarySearch
این متد برای جستجو باینری(دودویی) در لیست استفاده میشود و شماره خانه نتیجه جستجو را برمیگرداند اگر نتیجه را پیدا نکند عدد منفی برمیگرداند.
نکته: برای جستجو باینری حتما باید لیست مرتب شده باشد.
List<Integer> numbers=new ArrayList<>(Arrays.asList(2342,56,348,234,68,9,54,645,34,12,4,6));
Collections.sort(numbers);
System.out.println(numbers);
System.out.println(Collections.binarySearch(numbers,68));
خروجی
[4, 6, 9, 12, 34, 54, 56, 68, 234, 348, 645, 2342]
7
متد min
این متد کوچکترین عنصر درون کالکشن را برمیگرداند.
List<Integer> numbers=new ArrayList<>(Arrays.asList(2342,56,348,234,68,9,54,645,34,12,4,6));
System.out.println(Collections.min(numbers));
خروجی
4
متد max
این متد بزرگترین عنصر درون کالکشن را برمیگرداند.
List<Integer> numbers=new ArrayList<>(Arrays.asList(2342,56,348,234,68,9,54,645,34,12,4,6));
System.out.println(Collections.max(numbers));
خروجی
2342
تا اینجا با متدهای کاربردی کلاس Collections آشنا شدیم. در ادامه نحوه استفاده از متدهای کلاس Collections برای کلاس های مدل آشنا میشویم.
بسیار خرسندیم که با یک جلسه دیگر از این آموزش جاوا پیشرفته در خدمت شما بودیم و توانستیم به پیشرفت شما دوستان عزیز کمک کنیم. شما عزیزان میتوانید برای دسترسی بیشتر به جلسات این دوره از آموزش، آن را دانلود کنید.
امیدورایم که این جلسه از آموزش برای شما همراهان همیشگی درسمن مفید بوده باشد وخوشحال میشویم هر گونه پیشنهاد یا انتقادی دراین زمینه بود برای ما در قسمت نظرات ارسال کنید.
نظر شما در تصمیم دیگران اثرگذار است.
لطفا برای همراهان درسمن و بهتر شدن دوره نظر خود را بنویسید.