logo

מתי להשתמש ב-ArrayList וב-LinkedList ב-Java

ArrayList מספק זמן קבוע לפעולת החיפוש, לכן עדיף להשתמש ב-ArrayList אם החיפוש הוא פעולה תכופה יותר מאשר פעולת הוספה והסרה. ה-LinkedList מספק זמן קבוע לפעולות הוספה והסרה. אז עדיף להשתמש ב-LinkedList למניפולציה.

ל- ArrayList יש מורכבות זמן O(1) לגישה לאלמנטים באמצעות שיטות get and set.

ל-LinkedList יש מורכבות זמן O(n/2) לגישה לאלמנטים.

מחלקה LinkedLinked מיישמת גם ממשק Deque, כך שתוכל לקבל את הפונקציונליות של תור כפול ב-LinkedList. המחלקה ArrayList אינה מיישמת ממשק Deque.

למען האמת, ArrayList עדיף לגשת לנתונים ואילו LinkedList עדיף לתפעל נתונים. שתי המחלקות מיישמות ממשק רשימה.

דוגמה של ArrayList

 import java.util.*; public class ListExample { public static void main(String[] args) { //ArrayList is better to store and view data List list=new ArrayList(); list.add('ankit'); list.add('peter'); list.add('mayank'); System.out.println('Traversing ArrayList...'); for(String s:list){ System.out.println(s); } } } 

תְפוּקָה:

 Traversing ArrayList... ankit peter mayank 

דוגמה ל-LinkedList

 import java.util.*; public class ListExample2 { public static void main(String[] args) { //LinkedList is better to manipulate data List list=new LinkedList(); list.add('ankit'); list.add('peter'); list.add('mayank'); System.out.println('After adding: '+list); list.remove('peter'); System.out.println('After removing: '+list); list.set(1,'vivek'); System.out.println('After changing: '+list); } } 

תְפוּקָה:

 After adding: [ankit, peter, mayank] After removing: [ankit, mayank] After changing: [ankit, vivek]