רשימת Java היא אוסף מסודר. רשימת Java היא ממשק שמרחיב על ממשק אוסף. רשימת Java מספקת שליטה על המיקום שבו ניתן להוסיף איבר. ניתן לגשת לאיברים לפי האינדקס שלהם וגם לחפש איברים ברשימה.
רשימת Java
כמה מהנקודות החשובות על רשימת Java הן:
- ממשק רשימת Java הוא חלק מהגרסה הקולקטיבית של Java.
- רשימה מאפשרת לך להוסיף איברים כפולים.
- רשימה מאפשרת לך לכלול איברים 'null'.
- ממשק הרשימה קיבל הרבה שיטות ברירת מחדל ב-Java 8, לדוגמה replaceAll, sort ו-spliterator.
- אינדקסי הרשימה מתחילים מ-0, בדיוק כמו מערכים.
- רשימה תומכת ב-Generics ואנו צריכים להשתמש בזה כמה שאפשר. השימוש ב-Generics עם רשימה ימנע ClassCastException בזמן ריצה.
תרשימי מחלקת רשימת Java
ממשק ה־List ב־Java מרחיב את ממשק ה־Collection. ממשק ה־Collection מרחיב את ממשק ה־Iterable. כמה ממומשים הנפוצים ביותר של List הם ArrayList, LinkedList, Vector, Stack, CopyOnWriteArrayList. AbstractList מספק יישום תבניות של ממשק ה־List כדי להפחית את המאמץ ביישום של List.
שיטות ב־Java List
כמה מהשיטות השימושיות ביותר ב־Java List הן:
- int size(): לקבלת מספר האיברים ברשימה.
- boolean isEmpty(): לבדיקה אם הרשימה ריקה או לא.
- boolean contains(Object o): מחזיר true אם הרשימה מכילה את האיבר הספציפי.
- Iterator<E> iterator(): מחזיר מצביע על איטרטור על האיברים ברשימה בסדר הנכון.
- Object[] toArray(): מחזיר מערך המכיל את כל האיברים ברשימה בסדר הנכון.
- boolean add(E e): מוסיף את האיבר הספציפי לסוף הרשימה.
- boolean remove(Object o): מסיר את המופע הראשון של האיבר הספציפי מהרשימה.
- boolean retainAll(Collection<?> c): משמיר רק את האיברים ברשימה זו שנמצאים באוסף המסוים.
- void clear(): מסיר את כל האיברים מהרשימה.
- E get(int index): Returns the element at the specified position in the list.
- E set(int index, E element): Replaces the element at the specified position in the list with the specified element.
- ListIterator<E> listIterator(): מחזיר מעבר רשימה על האיברים ברשימה.
- List<E> subList(int fromIndex, int toIndex): מחזיר תצוגה של החלק של הרשימה בין המדד המסוים fromIndex, כולל, והמדד toIndex, לא כולל. הרשימה שמוחזרת נתמכת על ידי רשימה זו, כך ששינויים לא-מבניים ברשימה שמוחזרת מתקבלים ברשימה זו, ולהיפך.
חלק מהשיטות הברירת מחדל המתווספות ל-List ב-Java 8 הן;
- default void replaceAll(UnaryOperator<E> operator): מחליף כל איבר של רשימה זו בתוצאת החישוב של האופרטור על אותו איבר.
- default void sort(Comparator<super E> c): ממיין את הרשימה לפי הסדר שמתקבל על ידי ה-Comparator המסוים.
- default Spliterator<E> spliterator(): יוצר Spliterator על האיברים ברשימה זו.
מערך Java לרשימה
אנחנו יכולים להשתמש במחלקת Arrays כדי לקבל את התצוגה של מערך כרשימה. אולם, לא נוכל לבצע שינויים מבניים ברשימה, זה יזרוק java.lang.UnsupportedOperationException. לכן, הדרך הטובה ביותר היא להשתמש בלולאת for ליצירת רשימה על ידי חזרה על המערך. להלן דוגמה פשוטה המראה כיצד להמיר את מערך Java לרשימה בצורה תקינה.
package com.journaldev.examples;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ArrayToList {
public static void main(String[] args) {
String[] vowels = {"a","e","i","o","u"};
List vowelsList = Arrays.asList(vowels);
System.out.println(vowelsList);
/**
* List is backed by array, we can't do structural modification
* Both of the below statements will throw java.lang.UnsupportedOperationException
*/
//vowelsList.remove("e");
//vowelsList.clear();
//שימוש בלולאת for להעתקת אלמנטים מהמערך לרשימה, בטוח לשינוי של הרשימה
List myList = new ArrayList<>();
for(String s : vowels){
myList.add(s);
}
System.out.println(myList);
myList.clear();
}
}
בחרו אחת מהשיטות לעיל בהתבסס על דרישות הפרויקט שלכם.
רשימת Java למערך
A simple example showing the correct way to convert a list to array.
package com.journaldev.examples;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ListToArray {
public static void main(String[] args) {
List letters = new ArrayList();
// הוספת דוגמה
letters.add("A");
letters.add("B");
letters.add("C");
//המרת רשימה למערך
String[] strArray = new String[letters.size()];
strArray = letters.toArray(strArray);
System.out.println(Arrays.toString(strArray)); //will print "[A, B, C]"
}
}
מיון רשימת Java
ישנם שני דרכים למיון רשימה. אנו יכולים להשתמש במחלקת Collections למיון טבעי או להשתמש בשיטת המיון של List ולהשתמש במחולל שלנו למיון. להלן דוגמה פשוטה למיון רשימת Java.
package com.journaldev.examples;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class ListSortExample {
public static void main(String[] args) {
List ints = new ArrayList<>();
Random random = new Random();
for (int i = 0; i < 10; i++) ints.add(random.nextInt(1000));
//מיון טבעי באמצעות מחלקת Collections
Collections.sort(ints);
System.out.println("Natural Sorting: "+ints);
//המיון המותאם אישית שלי, בסדר הפוך
ints.sort((o1,o2) -> {return (o2-o1);});
System.out.println("Reverse Sorting: "+ints);
}
}
A sample output is given below. Since I am using Random for generating list elements, it will be different every time.
Natural Sorting: [119, 273, 388, 450, 519, 672, 687, 801, 812, 939]
Reverse Sorting: [939, 812, 801, 687, 672, 519, 450, 388, 273, 119]
פעולות נפוצות ברשימת Java
הפעולות הנפוצות ביותר שמבוצעות על רשימת Java הן הוספה, הסרה, הגדרה, ניקוי, גודל וכו '. להלן דוגמה פשוטה על רשימת Java שמראה שימוש נפוץ בשיטות.
package com.journaldev.examples;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ListExample {
public static void main(String args[]) {
List vowels= new ArrayList();
//דוגמה להוספה
vowels.add("A");
vowels.add("I");
//נכנס נוסח E בין A ל-I
vowels.add(1,"E");
System.out.println(vowels);
List list = new ArrayList();
list.add("O");list.add("U");
//מצרף אלמנטים של רשימה לאותיות
vowels.addAll(list);
System.out.println(vowels);
//דוגמה לניקוי כדי לרוקן את הרשימה
list.clear();
//דוגמה לגודל
System.out.println("letters list size = "+vowels.size());
//דוגמה להגדרה
vowels.set(2, "E");
System.out.println(vowels);
//דוגמה לתת-רשימה
vowels.clear();vowels.add("E"); vowels.add("E");vowels.add("I"); vowels.add("O");
list = vowels.subList(0, 2);
System.out.println("letters = "+vowels+", list = "+list);
vowels.set(0, "A");
System.out.println("letters = "+vowels+", list = "+list);
list.add("U");
System.out.println("letters = "+vowels+", list = "+list);
}
}
פלט של דוגמת התוכנית רשימת Java הנ"ל הוא;
[A, E, I]
[A, E, I, O, U]
letters list size = 5
[A, E, E, O, U]
letters = [E, E, I, O], list = [E, E]
letters = [A, E, I, O], list = [A, E]
letters = [A, E, U, I, O], list = [A, E, U]
עורך רשימת Java
להלן דוגמה פשוטה שמראה כיצד לעבור על רשימה ב-Java.
package com.journaldev.examples;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListIteratorExample {
public static void main(String[] args) {
List list = new ArrayList<>();
for(int i=0; i<5; i++) list.add(i);
Iterator iterator = list.iterator();
//עיבוד פשוט
while(iterator.hasNext()){
int i = (int) iterator.next();
System.out.print(i + ", ");
}
System.out.println("\n"+list);
//שינוי ברשימה באמצעות עורך
iterator = list.iterator();
while(iterator.hasNext()){
int x = (int) iterator.next();
if(x%2 ==0) iterator.remove();
}
System.out.println(list);
//שינוי מבנה הרשימה בעת עיבוד
iterator = list.iterator();
while(iterator.hasNext()){
int x = (int) iterator.next(); //ConcurrentModificationException here
if(x==1) list.add(10);
}
}
}
הפלט של דוגמת התוכנית עורך רשימת Java הנ"ל הוא;
0, 1, 2, 3, 4,
[0, 1, 2, 3, 4]
[1, 3]
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
at java.util.ArrayList$Itr.next(ArrayList.java:851)
at com.journaldev.examples.ListIteratorExample.main(ListIteratorExample.java:34)
זו כל הסיכום המהיר של רשימה ב-Java. אני מקווה שדוגמאות הרשימות ב-Java יעזרו לך להתחיל בתכנות של אוסף רשימות.
Source:
https://www.digitalocean.com/community/tutorials/java-list