menusearch
javapro.ir
جستجو
۱۳۹۶/۹/۱۰ جمعه
(2)
(0)
جلسه پنجم - اینترفیس List در جاوا
جلسه پنجم - اینترفیس List در جاوا
به نام خدا

        
تقدیم به هموطنان عزیزم



جاوا را با لذت یاد بگیر!

 

آموزش زبان برنامه نویسی جاوا

Collections در جاوا

موضوع: اینترفیس List

جلسه: پنجم

نویسنده : رحمان زارعی

جاوا را ساده،آسان و شیرین بنوشید!!!

 
سلام. در یک روز پاییزی در خدمت شما هستم.در این جلسه آموزشی جاوا قصد داریم یکی از اینترفیس های موجود درفریم ورک Collection را بررسی کنیم.

List Interface
طبق نمودار موجود در تصویر(1) اینترفیس List فرزند اینترفیس Collection در جاوا می باشد. List دارای متدهایی است که از طریق آن ها می توان عناصر را بر اساس ایندکس هایشان (شماره خانه شان) درج یا حذف کرد.


سلسله مراتب اینترفیس list در جاوا
 

•    چرا اینترفیس List فرزند اینترفیس Collection می باشد؟ زیرا اینترفیس List اینترفیس Collection را extends کرده است.

•    اینترفیس List توسط کلاس های  ArrayList،  LinkedList، Vector و Stack پیاده سازی یا implements شده است. به دلیل این که List اینترفیس می باشد ، هنگام شی سازی از آن می توانیم از سازنده های کلاس های ArrayList،  LinkedList، Vector و Stack کمک بگیریم.


ایجاد اشیا از List :
همان طور که می دانید List یک اینترفیس است و ما نمی توانیم مستقیم از آن شی ایجاد کنیم. به روش های زیر می توانیم از یک List شی ایجاد کنیم:
 
List<String> a = new ArrayList<String>();
List<String> b = new LinkedList<String>();
List<String> c = new Vector<String>();
List<String> d = new Stack<String>();

 
•    کافی است که نوع شی از نوع اینترفیس List و سازنده آن از یکی از کلاس های ArrayList،  LinkedList،  Vector  و  Stack باشد.

•    ما در جلسات آینده کلاس های  Vectorو Stack را بررسی خواهیم کرد. البته شما هم باید پی گیر و مطالبه گر باشید 😊😊

•    تگ <> کنار نام List برای مشخص کردن نوع عناصری است که قراره در List ما ذخیره شوند. این نوع می تواند عدد، رشته، نام کلاسی خاص و... باشد.

•    ما به روش معمولی از List شی ایجاد می کنیم با این تفاوت که سازنده آن ، از یکی کلاس های ArrayList،  LinkedList، Vector  و  Stack می باشد، مثلا:


 
List a = new ArrayList();
 
حالا نوع عناصر List را میان دو تگ <> کنار نام List و نام سازنده آن قرار می دهیم.
 
List<String>a = new ArrayList<String>();

برای استفاده از List در برنامه خود باید پکیج زیر را بالای سر کلاس خود import کنید:
 
import java.util.List;

همچنین در صورت استفاده از سازنده یکی از کلاس ArrayList،  LinkedList، Vector  و  Stack باید پکیج های مربوط آن ها را نیز در برنامه خود import  کنید:
 
import  java.util.ArrayList;
import  java.util.LinkedList;
import  java.util.Stack;
import  java.util.Vector;
 

متدهای اینترفیس List :
 
شمارهمتدتوضیح
1void add(int index,Object element)یک عنصر را در خانه مشخص (index) از لیست درج می کند.
2boolean addAll(int index,Collection c)همه عناصر موجود در Collection (مجموعه) c را از خانه index ام به بعد لیست اضاف می کند.
کلاس های ArrayList و LinkedList و... یک Collection حساب می شوند.
3object get(int index)عنصر ذخیره شده در خانه index ام لیست را برمی گرداند.
4object set(int index,Object element)عنصر مورد نظر را به خانه index ام لیست اختصاص می دهد.
5object remove(int index)عنصر مورد نظر در خانه index ام لیست را حذف می کند.
مقدار عنصر را نیز بعد از حذف به ما پس می دهد.
6ListIterator listIterator()برای پیمایش یک لیست از آن استفاده می کنیم
7ListIterator listIterator(int index)برای پیمایش یک لیست از خانه index ام به بعد استفاده می شود.
مثلا قصد دارید بجای خانه صفرم ، از خانه سوم به بعد شروع به پیمایش یک لیست کنید کافیست مقدار پارامتر این متد را 3 قرار دهید.
 
Example:
 
package list;

import  java.util.*;

public  class  ListExample {
    public  static  void  main(String args[]) {
        List<String> al = new ArrayList<String>();
        al.add("hasan");
        al.add("ali");
        al.add("sara");
        al.add(1, "maryam");
        System.out.println("Element at 2nd position: " + al.get(2));
        for (String s : al) {
            System.out.println(s);
        }
    }
}

خروجی ( output):
 
Element at 2nd position: ali
hasan
maryam
ali
sara

توضیحات:
 
List<String> al = new ArrayList<String>();
 
•    یک شی از List با استفاده از سازنده کلاس ArrayList ایجاد کرده ایم. عناصری که لیست ما می تواند ذخیره کند از نوع String می باشد.
 
al.add("hasan");
al.add("ali");
al.add("sara");
 
•    متد add عنصر مورد نظر را به لیست اضاف می کند.به گونه ای که هر عنصر بعد از آخرین عنصر موجود در لیست قرار می گیرد. در اینجا عنصر "hasan" در خانه صفرم و عنصر "ali" در خانه یکم  و عنصر "sara" در خانه بعد از عنصر "ali" یعنی خانه دوم قرار گرفته است.
 
al.add(1, "maryam");

این دستور عنصر "maryam" را به خانه یکم اضاف می کند، همان طور که می دانید در خانه یکم عنصر "ali" قرار داشت، با این کار عنصر "ali" جابه جا شده و به خانه دوم منتقل میشه و عنصر "sara" نیز به خانه سوم منتقل میشه و "maryam" در خانه یکم قرار می گیرد.
 
System.out.println("Element at 2nd position: " + al.get(2));

•    عنصر مورد نظر در خانه دوم لیست را برمی گرداند.
 
for (String s : al) {
            System.out.println(s);
        }

•    برای پیمایش لیست از حلقه for-each استفاده کرده ایم. این حلقه رو در جلسات قبل توضیح داده ایم.

ListIterator Interface
اینترفیس ListIterator برای پیمایش رو به جلو و رو به عقب عناصر یک لیست استفاده می شود.
اینترفیس ListIterator ، اینترفیس Iterator را extends کرده است.
برای استفاده از اینترفیس ListIterator ، باید پکیج زیر را import کنید:

 
import  java.util.ListIterator;


متدهای اینترفیس ListIterator  :

 
شمارهمتدتوضیح
1boolean hasNext()وقتی که در حال پیمایش رو به جلو لیست هستیم، این متد چک می کند آیا عنصری بعد از عنصر فعلی وجود دارد یا خیر. در صورت وجود مقدار true برمی گرداند.
برای بررسی شرط وجود عنصر در لیست از این متد استفاده می شود.
2Object next()عنصر بعد از عنصر فعلی را برمی گرداند.
3boolean hasPrevious()وقتی که در حال پیمایش رو به عقب لیست هستیم، این متد چک می کند که ایا عنصری قبل از عنصر فعلی وجود دارد یا خیر. ( در کل برای چک کردن وجود عنصر در لیست می باشد)
برای پیمایش معکوس یک لیست از این متد استفاده می کنیم. منظور از پیمایش معکوس این است که از آخر به اول لیست را پیمایش می کنیم.
4Object previous()عنصر قبل از عنصر فعلی را برمی گرداند.

•    روش استفاده از امکانات اینترفیس ListIterator ، برای پیمایش یک لیست را در مثال زیر می توانید ببینید:
Example:
 
package list;

import  java.util.*;

public class TestCollection8 {
    public static void main(String args[]) {
        List<String> al = new ArrayList<String>();
        al.add("hasan");
        al.add("ali");
        al.add("sara");
        al.add(1, "maryam");
        System.out.println("element at 2nd position: " + al.get(2));
        ListIterator<String> itr = al.listIterator();
        System.out.println("traversing elements in forward direction...");
        while (itr.hasNext()) {
            System.out.println(itr.next());
        }
        System.out.println("traFversing elements in backward direction...");
        while (itr.hasPrevious()) {
            System.out.println(itr.previous());
        }
    }
}
 
خروجی ( output):
 
element at 2nd position: ali
traversing elements in forward direction...
hasan
maryam
ali
sara
traFversing elements in backward direction...
sara
ali
maryam
hasan

توضیحات:
 
ListIterator<String> itr = al.listIterator();
 
برای پیمایش لیست خود با استفاده از اینترفیس ListIterator ، به روش بالا از ListIterator شی ایجاد می کنیم.

کاربرد اینترفیس ListIterator  در جاوا

1.    نام اینترفیس ListIterator را تایپ می کنیم.

2.    نوع عناصر لیستی که قراره پیمایش شوند را بین دو تگ <> قرار می دهیم. نوع عناصر لیست ما از نوع String بود به همین خاطر <String> را در کنار نام اینترفیس ListIterator قرار داده ایم.

3.    یک نام به دلخواه برای پیمایشگر خود انتخاب می کنیم.

4.    با استفاده از شی از نوع List متد ()listIterator صدا می زنیم.

•    قالب کلی ایجاد یک پیمایشگر ListIterator به صورت زیر است:


کاربرد  پیمایشگر ListIterator در جاوا
1.    تعیین نوع عناصری که قرار پیمایش شود.
2.    انتخاب یک نام دلخواه
3.    قرار دادن شی از نوع لیستی که قراره پیمایش شود.
  • حالا ایجاد یک حلقه برای پیمایش رو به جلو ( شروع پیمایش از ابتدا تا انتهای لیست):
پیمایش یک لیست در جاوا

1.    شرط حلقه، چک می کند که آیا عنصری بعد از عنصر فعلی وجود دارد یا خیر. در کل برای بررسی وجود عنصر در لیست می باشد و این که به انتهای لیست رسیدیم یا خیر.

2.    با هر بار صدا زدن متد next عنصر بعد از عنصر فعلی برگردانده و سپس چاپ می شود.

ایجاد یک حلقه برای پیمایش رو به عقب لیست ( شروع پیمایش از انتها تا ابتدای لیست):


پیمایش رو به عقب یک لیست در جاوا

1.    بررسی می کند ، قبل از عنصر فعلی ، عنصری دیگر وجود دارد یا خیر. در کل چک می کند به ابتدای لیست رسیدیم یا خیر.

2.    این دستور عنصر قبل از عنصر فعلی را به ما می دهد و مقدارش را چاپ می کند.

پایان توضیحات مثال


متد List subList(int fromindex,int toindex) :

این متد بخشی از عناصر یک لیست را از خانه fromindex تا toindex  برمی گرداند. عناصر برگردانده شده در قالب یک list می باشد.
توجه کنید که بازه ما به صورت [fromindex,toindex) می باشد ، یعنی هنگام برگردادن بخشی از عناصر لیست، ایندکس fromindex شامل می شود اما toindex شامل نمی شود.
Example:
 
package list;

// Java program to demonstrate subList operation
// on List interface.
import java.util.*;

public class ListDemo {
    public static void main(String[] args) {
        // Type safe array list, stores only string
        List<String> l = new ArrayList<String>(5);

        l.add("javapro");
        l.add("javalike");
        l.add("java");
        l.add("like");
        l.add("tutorial");

        List<String> range = new ArrayList<String>();

        // return List between 2nd(including)
        // and 4th element(excluding)
        range = l.subList(2, 4);

        System.out.println(range); //[java, like]
    }
}
 
خروجی ( output):
 
[java, like]
 
•    در این مثال عناصر موجود در بازه [2,4) لیست را برگردانده ایم. بازه [2,4) شامل خانه های دوم و سوم لیست می شود و شامل خانه چهام نمی شود.

حتما برای تسلط بر این مفاهیم باید مثال های متعدد ببینید و حل کنید.


پیروز و موفق باشید

 

این جلسه آموزشی را می توانید بصورت  کتاب الکترونیکی (PDF شده) در لینک زیر دریافت کنید.
این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید)




کانال تلگرام آموزش جاوا



آموزش آسان و ساده زبان برنامه نویسی جاوا
لینک دانلود

نشر این مطلب با ذکر منبع (لینک سایت) بلامانع است.
برای با خبر شدن از جدیدترین مطالب آموزشی جاوا عضو کانال تلگرام ما شوید.

 
aparattelegraminstagram
نظرات کاربران
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

بستن
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

0 نظر
طراحی سایتطراحی سایتسایت سازسایت سازفروشگاه سازفروشگاه ساز