JavaRush /وبلاگ جاوا /Random-FA /کافه استراحت شماره 129. تفاوت LinkedList و ArrayList چیست...

کافه استراحت شماره 129. تفاوت LinkedList و ArrayList چیست؟ ویژگی های جدید در جاوا 19

در گروه منتشر شد

تفاوت LinkedList و ArrayList چیست؟

منبع: Rrtutors.com اگر در برنامه نویسی جاوا تازه کار هستید، حتماً از خود می پرسید که هنگام کار با مجموعه ها از کدام یک بهتر است: LinkedList یا ArrayList. هر دوی این کلاس‌ها عملکردهای مشابهی را انجام می‌دهند، بنابراین گاهی اوقات تصمیم‌گیری برای استفاده از کدام یک در کارتان دشوار است. در این پست، تفاوت های بین این دو کلاس را تعریف می کنیم و در مورد مکان و زمان استفاده از آنها بحث خواهیم کرد. کافه استراحت شماره 129.  تفاوت LinkedList و ArrayList چیست؟  ویژگی های جدید در جاوا 19 - 1

تفاوت ArrayList و LinkedList در جاوا

بیایید 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: ویژگی های جدید در جاوا 19 ارائه می شود

منبع: رشته های مجازی InfoWorld ، تطبیق الگو برای دستورات سوئیچ، یک API برداری، و یک پورت Linux/RISC-V همگی در سپتامبر امسال در جاوا 19، نسخه جدیدی از زبان با پشتیبانی کوتاه مدت، عرضه می شوند. علاوه بر این، Java Development Kit 19 اخیراً ویژگی دیگری را معرفی کرده است: پیش نمایش الگوهای ضبط برای ناوبری و پردازش داده ها. به عنوان بخشی از برنامه در حال انجام برای بهبود زبان جاوا، JDK 19، یا به سادگی جاوا 19، دارای پتانسیل این است که تعداد زیادی ویژگی، از عمومی تا اشیاء ارزشی را در خود داشته باشد. JDK 19 به‌روزرسانی بعدی پس از JDK 18 خواهد بود که در 22 مارس 2022 معرفی شد. نسخه استاندارد جاوا هر شش ماه یکبار منتشر می شود. توسعه دهندگان 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 جدید استفاده می کنند، می توانند الگوریتم های برداری پیچیده را در جاوا با استفاده از بردار خودکار HotSpot بنویسند، اما با یک مدل سفارشی که بردارسازی را قابل پیش بینی تر و قابل اطمینان تر می کند. Vector API قبلاً در JDK 16، JDK 17 و JDK 19 انکوبه شده بود.

    به عنوان یکی دیگر از افزودنی‌های API برداری، عملیات‌های انتگرال بیتی در پهنا گسترش خواهند یافت تا شامل عملیات‌هایی مانند شمارش تعداد یک بیت، معکوس کردن ترتیب بیت‌ها و فشرده‌سازی و گسترش بیت‌ها شوند.

  • با پورت Linux/RISC-V ، جاوا از مجموعه دستورالعمل های سخت افزاری پشتیبانی می کند که قبلاً توسط طیف گسترده ای از ابزارهای زبان پشتیبانی می شود. RISC-V خانواده ای از ISA های مرتبط است. پورت Linux/RISC-V فقط از پیکربندی RV64GV RISC-V پشتیبانی می‌کند، یک ISA با هدف عمومی 64 بیتی که شامل دستورالعمل‌های برداری است.

    این پورت از گزینه‌های ماشین مجازی HotSpot زیر پشتیبانی می‌کند: مفسر قالب، کامپایلر C1 JIT (کارفرما)، کامپایلر C2 JIT (سرور)، و همه زباله‌گیرهای اصلی فعلی، از جمله ZGC و Shenandoah.

مانند JDK 18، JDK 19 نیز یک نسخه کوتاه مدت با شش ماه پشتیبانی خواهد بود. نسخه قبلی، JDK 17، نسخه LTS با پشتیبانی چندین سال تضمین شده بود. در 14 سپتامبر 2021 معرفی شد.
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION