JavaRush /Java блогы /Random-KK /Кофе-брейк №129. LinkedList пен ArrayList арасындағы айыр...

Кофе-брейк №129. LinkedList пен ArrayList арасындағы айырмашылық неде? Жаңа мүмкіндіктер Java 19-да келеді

Топта жарияланған

LinkedList пен ArrayList арасындағы айырмашылық неде?

Дереккөз: Rrtutors.com Егер сіз Java бағдарламалауды жаңадан бастасаңыз, коллекциялармен жұмыс істегенде қайсысын қолданған дұрыс деген сұрақ туындауы керек: LinkedList немесе ArrayList. Бұл сыныптардың екеуі де ұқсас функцияларды орындайды, сондықтан кейде сіздің жұмысыңызда қайсысын пайдалану жақсы екенін шешу қиын болуы мүмкін. Бұл постта біз екі сыныптың арасындағы айырмашылықтарды анықтаймыз және оларды қайда және қашан пайдалану керектігін талқылаймыз. Кофе-брейк №129.  LinkedList пен ArrayList арасындағы айырмашылық неде?  Java 19 - 1 жүйесінде жаңа мүмкіндіктер

Java тіліндегі 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: Java 19-да келетін жаңа мүмкіндіктер

Дереккөз: InfoWorld виртуалды ағындары, коммутатор мәлімдемелері үшін үлгі сәйкестігі, векторлық API және Linux/RISC-V порты осы қыркүйек айында қысқа мерзімді қолдауы бар тілдің жаңа шығарылымы Java 19-да келеді. Сонымен қатар, Java Development Kit 19 жақында тағы бір мүмкіндікті ұсынды: деректерді шарлау және өңдеу үшін Жазба үлгілерін алдын ала қарау. Java тілін жетілдіру бойынша ағымдағы жоспардың бөлігі ретінде JDK 19 немесе жай ғана Java 19 генериктерден құнды нысандарға дейін көптеген мүмкіндіктерді қамту мүмкіндігіне ие. JDK 19 2022 жылдың 22 наурызында енгізілген JDK 18-тен кейінгі келесі жаңарту болады. 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 қолданатын әзірлеушілер HotSpot автовекторизаторын пайдалана отырып, күрделі векторлық алгоритмдерді Java тілінде жаза алады, бірақ векторизацияны болжауға болатын және сенімдірек ететін теңшелетін үлгімен. Vector API бұрын JDK 16, JDK 17 және JDK 19-да инкубацияланған.

    API векторының тағы бір қосымшасы ретінде разрядтық интегралдық жалпы жолақ операциялары бір биттің санын санау, бит ретін өзгерту және биттерді қысу және кеңейту сияқты операцияларды қамту үшін кеңейтіледі.

  • Linux/RISC-V порты арқылы Java тілі құралдар жинағының кең ауқымы қолдайтын аппараттық нұсқаулар жинағына қолдау көрсетеді. RISC-V — байланысты АХС тобы. Linux/RISC-V порты тек RV64GV RISC-V конфигурациясын, векторлық нұсқауларды қамтитын 64-биттік жалпы мақсаттағы ISA-ны қолдайды.

    Порт келесі HotSpot виртуалды машинасының опцияларына қолдау көрсетеді: үлгі аудармашы, JIT компиляторы C1 (клиент), JIT компиляторы C2 (server) және барлық ағымдағы негізгі қоқыс жинаушылар, соның ішінде ZGC және Shenandoah.

JDK 18 сияқты, JDK 19 да алты айлық қолдауымен қысқа мерзімді шығарылым болады. Алдыңғы шығарылым, JDK 17, LTS шығарылымы болды, қолдауы бірнеше жыл бойы кепілдендірілген. Ол 2021 жылдың 14 қыркүйегінде енгізілді.
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION