JavaRush /בלוג Java /Random-HE /הפסקת קפה מס' 129. מה ההבדל בין LinkedList ל- ArrayList? ...

הפסקת קפה מס' 129. מה ההבדל בין LinkedList ל- ArrayList? תכונות חדשות מגיעות ב-Java 19

פורסם בקבוצה

מה ההבדל בין LinkedList ל- ArrayList?

מקור: Rrtutors.com אם אתה חדש בתכנות Java, אתה ודאי תוהה באיזה עדיף להשתמש בעבודה עם אוספים: LinkedList או ArrayList. שני המחלקות הללו מבצעות פונקציות דומות, כך שלעתים יכול להיות קשה להחליט באיזו מהן עדיף להשתמש בעבודה שלך. בפוסט זה, נגדיר את ההבדלים בין שני המחלקות ונדון היכן ומתי להשתמש בהם. הפסקת קפה מס' 129.  מה ההבדל בין LinkedList ל- ArrayList?  תכונות חדשות מגיעות ב-Java 19 - 1

ההבדל בין ArrayList ל-LinkedList ב-Java

בואו נשווה בין ArrayList ל-LinkedList על סמך הקריטריונים שלהם:

מָנִיפּוּלָצִיָה

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

גִישָׁה

ArrayList מאחסן ומחזיר נתונים מהר יותר. מצד שני, LinkedList תומך בעיבוד נתונים מהיר יותר.

יישום

ArrayList מיישמת רשימה בלבד, בעוד LinkedList מיישמת גם רשימה וגם תור. LinkedList משמש לעתים קרובות גם בתור תור.

יישום פנימי

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

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

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

דוגמה ל-LinkedList:

import java.util.LinkedList;

import java.util.List;

public class LinkeddExample {

    public static void main(String[] args) {

        List<String> myGroup=new LinkedList<>();

        myGroup.add("Pohekar");

        myGroup.add("Sumedh");

        myGroup.add("Nikir");

        System.out.println("Create Group: "+myGroup);

        myGroup.remove("Pohekar");

        System.out.println("Remove Group element: "+myGroup);

        myGroup.set(1,"Niha");

        System.out.println("Modify Group: "+myGroup);

    }

}

דוגמה ArrayList:

import java.util.ArrayList;

import java.util.List;

public class ArrayListExca {

    public static void main(String[] args) {

        List<String> Pro=new ArrayList<>();

        Pro.add("PythonPro");

        Pro.add("JavaPro");

        Pro.add("C#Pro");



        System.out.println("Traversing ArrayList...");

        for(String s:Pro){

            System.out.println(s);


    }

    }

}

JDK 19: תכונות חדשות מגיעות ב-Java 19

מקור: InfoWorld שרשורים וירטואליים, התאמת דפוסים להצהרות מתג, API וקטור ויציאת Linux/RISC-V, כולם מגיעים בספטמבר הקרוב ב-Java 19, מהדורה חדשה של השפה עם תמיכה לטווח קצר. בנוסף, Java Development Kit 19 הציגה לאחרונה תכונה נוספת: תצוגה מקדימה של דפוסי Record עבור ניווט ועיבוד נתונים. כחלק מהתוכנית המתמשכת לשיפור שפת Java, ל-JDK 19, או פשוט Java 19, יש פוטנציאל להכיל מספר עצום של תכונות, החל מגנריות ועד אובייקטים ערכיים. JDK 19 יהיה העדכון הבא בעקבות JDK 18, שהוצג ב-22 במרץ 2022. הגרסה הסטנדרטית של Java משוחררת כל שישה חודשים. מפתחי OpenJDK פרסמו את לוח ההשקה הרשמי של JDK 19. לפיו, המהדורה היציבה תופיע ב-20 בספטמבר. לפני כן, מפתחים יוכלו להכיר את הבנייה המקדימה, אשר ישוחררו ב-9 ביוני וב-21 ביולי. מועמדים לשחרור יפורסמו ב-11 באוגוסט וב-25 באוגוסט. בניית גישה מוקדמת של JDK 19 זמינה בכתובת jdk.java.net/19 . התכונות המוצעות ב-JDK 19 כוללות:
  • Предварительный просмотр шаблонов записей для разбора значений записей. Шаблоны записей и шаблоны типов могут быть вложены друг в друга, чтобы обеспечить декларативную, мощную и компонуемую форму навигации и обработки данных. Идея этой функции состоит в том, чтобы добавить расширение сопоставления шаблонов для выражения более сложных составных requestов данных без изменения синтаксиса or семантики шаблонов типов. Это предложение основано на сопоставлении шаблонов для instanceof, представленном в JDK 16 в марте 2021 года. Далее, в будущих планах может потребоваться расширение шаблонов записей с помощью таких возможностей, How шаблоны массивов и vararg-шаблоны. Запись шаблонов является частью Project Amber, направленного на изучение и развитие небольших функций Java, ориентированных на производительность.

  • Предварительный просмотр чужой функции и API памяти. Он представит API, с помощью которого Java-программы смогут взаимодействовать с codeом и данными вне среды выполнения Java.

    Благодаря эффективному вызову внешних функций (codeа вне среды выполнения Java) и безопасному доступу к внешней памяти (памяти, не управляемой JVM) API позволит программам Java вызывать собственные библиотеки и обрабатывать собственные данные без Howой-либо опасности для Java Native Interface (JNI).

  • Предварительный просмотр виртуальных потоков (virtual threads). Это предложение представляет собой облегченные потоки, которые значительно сокращают усorя по написанию, обслуживанию и наблюдению за высокопроизводительными параллельными applicationsми. Идея предложения состоит в обеспечении возможности масштабирования serverных приложений, написанных в простом стиле “поток на request” (thread-per-request) с оптимальным использованием оборудования. Это позволит внедрять в code, использующий java.langThread API, виртуальные потоки с минимальными изменениями, а также устранять неполадки, выполнять отладку и профorрование виртуальных потоков с помощью существующих инструментов JDK.

  • Третья предварительная version сопоставления шаблонов для выражений и операторов switch. Она расширяет сопоставление шаблонов (pattern matching) до switch, чтобы позволить тестировать выражение по ряду шаблонов, каждый из которых имеет определенное действие. Благодаря этому сложные requestы, ориентированные на данные, могут быть выражены лаконично и безопасно. Эта функция ранее была предварительно представлена ​​в JDK 17 и JDK 18. В третьей предварительной версии будут добавлены улучшения, включая замену защищенных шаблонов when предложениями в switch-блоках. Идея предложения состоит в расширении выразительности и применимости switch-выражений и операторов.

  • הדגירה הרביעית של ה-API הווקטורי תבטא חישובים וקטוריים המהדרים באופן אמין בזמן ריצה להוראות וקטור אופטימליות בארכיטקטורות מעבדים נתמכות. זה יספק ביצועים טובים יותר מאשר חישובים סקלרים מקבילים. מפתחים המשתמשים ב-API החדש יוכלו לכתוב אלגוריתמים וקטוריים מורכבים ב-Java באמצעות האוטוקטורייזר של HotSpot, אך עם מודל מותאם אישית שהופך את הווקטוריזציה לצפויה ואמינה יותר. ה-Vector API הודגרה בעבר ב-JDK 16, JDK 17 ו-JDK 19.

    כתוספת נוספת לממשק ה-API הווקטור, פעולות אינטגרליות של רשת סיביות יורחבו לכלול פעולות כגון ספירת מספר סיביות אחת, היפוך סדר סיביות ודחיסה והרחבה של סיביות.

  • עם יציאת Linux/RISC-V , Java תזכה לתמיכה בערכת הוראות חומרה שכבר נתמכת על ידי מגוון רחב של ערכות כלים לשפות. RISC-V היא משפחה של ISAs קשורים. יציאת Linux/RISC-V תתמוך רק בתצורת RV64GV RISC-V, ISA של 64 סיביות לשימוש כללי הכולל הוראות וקטוריות.

    היציאה תתמוך באפשרויות ה-HotSpot הווירטואליות הבאות: מתורגמן תבניות, מהדר JIT C1 (לקוח), מהדר JIT C2 (שרת), וכל אוספי האשפה העיקריים הנוכחיים, כולל ZGC ו-Shenandoah.

כמו JDK 18, JDK 19 יהיה מהדורה לטווח קצר עם שישה חודשי תמיכה. המהדורה הקודמת, JDK 17, הייתה מהדורת LTS עם תמיכה מובטחת למספר שנים. הוא הוצג ב-14 בספטמבר 2021.
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION