CodeGym /בלוג Java /Random-HE /שיטת Arrays.asList() ב-Java
John Squirrels
רָמָה
San Francisco

שיטת Arrays.asList() ב-Java

פורסם בקבוצה
הרבה מתחילים מערבבים את הרעיון של שיטת Arrays.asList() עם מבנה הנתונים ArrayList. למרות שהם עשויים להיראות ולהישמע דומים, שני אלה שונים לחלוטין כשמדובר ביישום. בפוסט זה, נסקור את השימוש הבסיסי בשיטת Arrays.asList() ונברור כמה בלבולים רווחים הקשורים אליה.

מדוע נעשה שימוש ב-Arrays.asList()?

אם יש לך Array שאתה צריך להפוך לרשימה אז java.util.Arrays מספקת עטיפה Arrays.asList() לשרת מטרה זו. במילים פשוטות, שיטה זו לוקחת מערך כפרמטר ומחזירה רשימה. חלקים עיקריים של ה-API של פלטפורמת Java פותחו לפני הצגת מסגרת האוספים. אז מדי פעם, ייתכן שיהיה עליך לתרגם בין מערכים מסורתיים לבין האוספים המודרניים יותר. פונקציה זו משמשת כקישור בין אוספים לממשקי API מבוססי מערך.שיטת Arrays.asList() ב-Java - 1

דוגמא

תסתכל על הדוגמה הבאה:
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;

public class ArraysAsListDemo {
    public static void main(String[] args) {

	String[] teamMembers = {"Amanda", "Loren", "Keith"};
      // using aslist() method
	List teamList = Arrays.asList(teamMembers);
	System.out.println("List : " + teamList);

	HashSet teamHashSet = new HashSet<>(Arrays.asList(teamMembers));
	System.out.println("HashSet : " + teamHashSet);
    }
}
תְפוּקָה:
רשימה : [Amanda, Loren, Keith] HashSet : [Keith, Loren, Amanda] // HashSet לא שומר על סדר

כיצד Arrays.asList() ו- ArrayList שונים?

כאשר אתה קורא לשיטת Arrays.asList() במערך, האובייקט המוחזר אינו ArrayList ( יישום מערך שניתן לשנות את גודלו של ממשק List ). זהו אובייקט תצוגה עם שיטות get() ו- set() הנותנות גישה למערך הבסיסי. כל השיטות שישנו את גודל המערך כמו add() או remove() של האיטרטור המשויך זורקות UnsupportedOperationException . הסיבה לכך שתוכנית java מתחברת בהצלחה אך נותנת חריגה בזמן ריצה היא שככל הנראה, "List" מוחזר כתוצאה מ- Arrays.asList() . כאשר כל פעולות ההוספה/מחיקה מותרות. אבל מכיוון שמבנה הנתונים הבסיסי הוא "מערך" שאינו ניתן לשינוי , ולכן יוצא חריג בזמן הריצה. הנה קטע שמראה איך זה נראה:
import java.util.Arrays;
import java.util.List;
public class ArraysAsListDemo {
   public static void main(String[] args) {
	Integer[] diceRoll = new Integer[6];
      //using aslist() method
	List diceRollList = Arrays.asList(diceRoll);
	System.out.println(diceRollList);

	// using getters and setters to randomly access the list
	diceRollList.set(5, 6);
	diceRollList.set(0, 1);
	System.out.println(diceRollList.get(5));
	System.out.println(diceRollList.get(1));

	System.out.println(diceRollList);

	diceRollList.add(7); // Add a new Integer to the list
    }
}
תְפוּקָה:
[null, null, null, null, null, null] 6 null [1, null, null, null, null, 6] חריגה בשרשור "ראשי" java.lang.UnsupportedOperationException ב-java.util.AbstractList.add(AbstractList. java:148) ב-java.util.AbstractList.add(AbstractList.java:108) ב-ArraysAsListDemo.main(ArraysAsListDemo.java:20)

דוגמאות לשימוש בשיטת asList()

החל מ-Java SE 5.0, השיטה asList() מוכרזת כבעלת מספר משתנה של ארגומנטים. במקום להעביר מערך, אתה יכול גם להעביר אלמנטים בודדים. לדוגמה:
import java.util.Arrays;
import java.util.List;
public class ArraysAsListDemo {
    public static void main(String[] args) {
	List seasons = Arrays.asList("winter", "summer", "spring", "fall");
	List odds = Arrays.asList(1, 3, 5, 7, 9);

	System.out.println(seasons);
	System.out.println(odds);
    }
}
תְפוּקָה:
[חורף, קיץ, אביב, סתיו] [1, 3, 5, 7, 9]

סיכום

כדי להשתמש ב-Arrays.asList() אתה צריך לזכור שזו רק שיטת עטיפה עבור כלי השירות שלך. אל תערבב את זה עם ArrayList וזכור שהוא מחזיר "רשימה". בתחילה אתה עשוי לקבל שגיאות עבור ביצוע פונקציות הוספה/הסרה, אבל הכל נעלם עם תרגול והבנה עקביים. אז פגע ב-IDE שלך ותהיה לך חווית למידה נהדרת!
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION