خب در ادامهی توضیح موضوع لیستها در جاوا، میخوام در این پست LinkedList رو توضیح بدم. Linkedlist ها از ۲ قسمت تشکیل شدهاند، ۱. Value و ۲. Pointer . در قسمت اول مقدار دادهی ما قراردارد و در قسمت دوم آدرس خانهی بعدی. به همین علت، دستکاری و حذف داده از یک Linkedlist بسیار سریعتر از ArrayList خواهد بود. در صورتی که جایی که تنها نیاز به ذخیرهسازی اطلاعات داریم، ArrayList گزینهی بهتری هستش.
برای تعریف LinkedList از این دستور استفاده میکنیم:
LinkedList<String> MyLinkedList = new LinkedList<String>();
برای اضافه کردن دادهها از دستور add استفاده میکنیم:
MyLinkedList.add("Soroush"); MyLinkedList.add("Tayyebi"); MyLinkedList.add("Soroush2");
برای دسترسی گرفتن به اطلاعات این LinkedList میتونیم از Iterator استفاده کنیم:
Iterator<String> i = MyLinkedList.iterator(); while (i.hasNext()){ System.out.println(i.next()); }
در صورتی که این دستور را اجرا کنیم:
MyLinkedList.add(1,"Salam");
خانه Tayyebi با Salam جایگزین میشه.
توسط این دستور میتوانیم آیتمها رو پاک کنید:
MyLinkedList.remove(1);
خب یک مثال میخوام بزنم براتون. لینکلیستی با اسامی شهرها رو در نظر بگیرید. حالا میخوام به ترتیب حروف الفبا در این لیست داده اضافه کنم.
import java.util.Iterator; import java.util.LinkedList; import java.util.ListIterator; public class LinkedListExample { public static void main(String[] args) { LinkedList<String> cityOrdered = new LinkedList<String>(); addInOrder(cityOrdered,"Tehran"); addInOrder(cityOrdered,"Karaj"); addInOrder(cityOrdered,"Mazandaran"); addInOrder(cityOrdered,"Kerman"); addInOrder(cityOrdered,"Kerman"); addInOrder(cityOrdered,"Kerman"); printList(cityOrdered); } private static void printList(LinkedList<String> data){ Iterator<String> i = data.iterator(); while (i.hasNext()){ System.out.println("City:"+ i.next()); } System.out.println("================"); } private static boolean addInOrder(LinkedList<String> myList, String newCity){ ListIterator<String> i = myList.listIterator(); while (i.hasNext()){ int comparison = i.next().compareTo(newCity); if(comparison == 0){ System.out.println("Already Exist!"); return false; } else if(comparison > 0){ i.previous(); // چون از دستور next استفاده کرده بودیم، باید یک خانه به قبلی برگردیم. i.add(newCity); return true; }else{ // } } i.add(newCity); return true; } }
توسط دستور زیر میتونید اولین خانه اطلاعات را بگیرید:
cityOrdered.getFirst();
دستور زیر چک میکنه که لیست خالی هستش یا خیر:
cityOrdered.isEmpty()
وبلاگ خوبی دارید، موافق بودید پیام بدید تبادل لینک کنید