JavaRush /Java блогу /Random-KY /Кофе-брейк №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 тorн өркүндөтүү боюнча жүрүп жаткан пландын бир бөлүгү катары, JDK 19 же жөн эле Java 19 генериктерден баштап баалуу an objectтерге чейин көптөгөн функцияларды камтый алат. JDK 19 2022-жылдын 22-мартында киргизилген JDK 18ден кийинки жаңыртуу болот. Java стандарттык versionсы алты ай сайын чыгарылат. OpenJDK иштеп чыгуучулары JDK 19 үчүн расмий релиз графигин жарыялашты. Ага ылайык, туруктуу релиз 20-сентябрда пайда болот. Буга чейин иштеп чыгуучулар 9-июнда жана 21-июлда чыга турган алдын ала түзүмдөр менен тааныша алышат. Чыгарылган талапкерлер 11-августта жана 25-августта жарыяланат. JDK 19'дун алгачкы мүмкүнчүлүктөрү jdk.java.net/19 дарегинде жеткorктүү . 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 тorнде татаал вектордук алгоритмдерди жаза алышат, бирок векторизацияны алдын ала айтууга болот жана ишенимдүү кылат. Vector API мурда JDK 16, JDK 17 жана JDK 19да инкубацияланган.

    API векторунун дагы бир кошумчасы катары, биттик интегралдык тилке боюнча операциялар бир биттин санын эсептөө, бит тартибин тескерилөө, бит кысуу жана кеңейтүү сыяктуу операцияларды камтыгандай кеңейтилет.

  • Linux/RISC-V порту менен Java аппараттык инструкциялар топтомун колдоого ээ болот, ал буга чейин тил куралдарынын кеңири спектри тарабынан колдоого алынган. RISC-V - бул ИСАнын тиешелүү үй-бүлөсү. Linux/RISC-V порту RV64GV RISC-V конфигурациясын гана колдойт, 64 биттик жалпы максаттагы ISA, ал вектордук нускамаларды камтыйт.

    Порт төмөнкү HotSpot виртуалдык машинасынын варианттарын колдойт: шаблон котормочу, C1 JIT компилятору (кардар), C2 JIT компилятору (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