List

List یکی از interface های اصلی Collection Framework جاواست که برای نگه داری یک لیست از آن استفاده می‌شود، زیر کلاس‌های مختلفی همچون LinkedList ، ArrayList ، Vector در جاوا وجود دارند که هر کدام با استفاده از  ساختمان داده‌های متفاوت به نحوی مفهوم لیست را پیاده سازی کرده‌اند.

یک لیست باید حداقل شرایط زیر را بر آورده کند :

  • بتوان به آن عناصری را اضافه یا حذف کرد.
  • بتواند اعضای تکراری را نگه داری کند.
  • بتوان با استفاده از اندیس (با شروع از صفر) به عناصر داخل آن دسترسی داشت.

کاربردهای Listبه صورت کلی عبارت‌اند از :

  • نگه داری یک لیست و مجاز بودن اعضای تکراری
  • نگه داری یک مجموعه با اندازه پویا و قابل افزایش
  • کاربرد ساده تر نسبت به آرایه

متدهای List در جدول زیر آمده‌اند ، کلاس‌هایی که از کلاس List ارث بری دارند موظف هستند این متدها را پیاده سازی کنند.

متد کاربرد
add(Object o) یک عنصر جدید به Listاضافه می‌کند.
add(index,Object o) یک عنصر جدید را در اندیس مورد نظر درج می‌کند.
addAll(Collection c) تمام اعضای یک کالکشن دیگر را به لیست اضافه می‌کند.
clear() تمام اعضای داخل لیست را حذف می‌کند.
contains(Object o) وجود یک عنصر در لیست را بررسی می‌کند.
containsAll(Collection c) اگر تمام اعضای کالکشن c در لیست فعلی وجود داشته باشند true بر می‌گرداند.
equals(Ojbect o) لیست فعلی را با لیست دیگری مقایسه می‌کند.
get(index) عنصر موجود در اندیس index را بر می‌گرداند.
hashCode() HashCode کل لیسترا محاسبه می‌کند.
indexOf(Ojbect o) اولین اندیس یک عنصر را بر می‌گرداند.
isEmpty() بررسی می‌کند که لیستخالی است یا خیر؟
Iterator iterator() یک iterator برای پیمایش لیست بر می‌گرداند.
lastIndexOf(Object o) در صورت وجود عناصر تکراری آخرین اندیس یک عنصر را بر می‌گرداند.
ListIterator() یک ListIterator در اختیار ما قرار می‌دهد.
remove(Object o) یک عنصر را از لیست حذف می‌کند.
removeAll(Collection c) تمام عناصر یک کالکشن دیگر را از لیست فعلی حذف می‌کند.
retainAll(Collection c) اشتراک لیست فعلی را با کالکشن دیگر محاسبه می‌کند و سایر اعضا را حذف می‌کند.
set(index,Object o) عنصر داخل اندیس index را به مقدار o تغییر می‌دهد.
size() تعداد عناصر داخل لیست را بر می‌گرداند.
subList(fromIndex,toIndex) یک زیر-لیست از اندیس fromIndex تا toIndex در اختیار ما قرار می‌دهد.
Object[] toArray() عناصر را در داخل یک آرایه در اختیار ما قرار می‌دهد.

در ادامه با یک مثال با Listآشنا می‌شویم و مثال‌های بیشتر را به آموزش‌های بعدی موکول می‌کنیم.

import java.util.List;
import java.util.LinkedList;

public class ListDemo 
{
    public static void main(String[] args) 
    {
        List list = new LinkedList();
        list.add("A");
        list.add("B");
        list.add("C");
        list.add("D");

        System.out.println(list);

        int indexOfC = list.indexOf("C");
        System.out.println(indexOfC);

        list.set(indexOfC, "X");
        System.out.println(list);
    }
}
[A, B, C, D]
2
[A, B, X, D]

در مثال بالا ابتدا یک List ایجاد می‌کنیم ، چون List یک interface است برای ساخت یک شیء جدید از آن باید از یکی از زیر کلاس‌های پیاده سازی شده آن استفاده کنیم که در اینجا LinkedList را انتخاب کردیم. سپس با استفاده از متد ()add چندین عضو به لیست اضافه کردیم. سپس از چاپ لیست ، با استفاده از متد ()indexOf اندیس عنصر C را به دست آورده و آن را در متغیر indexOfC ذخیره می‌کنیم. بعد از چاپ indexOfC با استفاده از متد ()set عنصر موجود در اندیس indexOfC را به X تغییر می‌دهیم و در انتها مجدداً لیست را چاپ می‌کنیم.