JavaRush /مدونة جافا /Random-AR /استراحة القهوة رقم 129. ما هو الفرق بين LinkedList و Arra...

استراحة القهوة رقم 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 مناسبًا للعمل مع مجموعة تسمح بإجراء تعديلات مختلفة على البيانات، مثل الإضافة والحذف.

مثال القائمة المرتبطة:

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);

    }

}

مثال لقائمة المصفوفات:

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 ، ومطابقة الأنماط لبيانات التبديل، وواجهة برمجة تطبيقات المتجهات، ومنفذ Linux/RISC-V كلها ستأتي في سبتمبر في Java 19، وهو إصدار جديد للغة مع دعم قصير المدى. بالإضافة إلى ذلك، قدمت Java Development Kit 19 مؤخرًا ميزة أخرى: معاينة أنماط التسجيل للتنقل بين البيانات ومعالجتها. كجزء من الخطة المستمرة لتحسين لغة 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-выражений и операторов.

  • ستعبر الحضانة الرابعة لواجهة برمجة تطبيقات المتجهات عن حسابات المتجهات التي يتم تجميعها بشكل موثوق في وقت التشغيل إلى تعليمات متجهة مثالية على بنيات المعالج المدعومة. سيوفر هذا أداءً أفضل من الحسابات العددية المكافئة. سيتمكن المطورون الذين يستخدمون واجهة برمجة التطبيقات الجديدة من كتابة خوارزميات متجهة معقدة في Java باستخدام أداة التوجيه التلقائي الخاصة بـ HotSpot، ولكن باستخدام نموذج مخصص يجعل عملية التوجيه أكثر موثوقية وقابلية للتنبؤ بها. تم احتضان Vector API مسبقًا في JDK 16 وJDK 17 وJDK 19.

    كإضافة أخرى إلى واجهة برمجة تطبيقات المتجهات، سيتم توسيع العمليات المتكاملة على مستوى البت لتشمل عمليات مثل حساب عدد البتات الواحدة، وعكس ترتيب البتات، وضغط البتات وتوسيعها.

  • باستخدام منفذ 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