JavaRush /Blog Java /Random-PL /Przerwa kawowa #129. Jaka jest różnica między LinkedList ...

Przerwa kawowa #129. Jaka jest różnica między LinkedList i ArrayList? Nowe funkcje dostępne w Javie 19

Opublikowano w grupie Random-PL

Jaka jest różnica między LinkedList i ArrayList?

Źródło: Rrtutors.com Jeśli dopiero zaczynasz programować w Javie, musisz się zastanawiać, czego lepiej używać podczas pracy z kolekcjami: LinkedList czy ArrayList. Obie te klasy pełnią podobne funkcje, dlatego czasami może być trudno zdecydować, która z nich jest lepsza w Twojej pracy. W tym poście zdefiniujemy różnice między tymi dwiema klasami i omówimy, gdzie i kiedy ich używać. Przerwa kawowa #129.  Jaka jest różnica między LinkedList i ArrayList?  Nowe funkcje dostępne w Javie 19 - 1

Różnica między ArrayList i LinkedList w Javie

Porównajmy ArrayList i LinkedList na podstawie ich kryteriów:

Manipulacja

W obu przypadkach istnieje różnica w szybkości manipulacji tablicą. ArrayList wolniej operuje tablicami niż LinkedList. Wynika to z faktu, że LinkedList opiera się na węzłach i nie wymaga dużego przesuwania bitów.

Dostęp

ArrayList przechowuje i pobiera dane szybciej. Z drugiej strony LinkedList obsługuje szybsze przetwarzanie danych.

Realizacja

ArrayList implementuje tylko listę, podczas gdy LinkedList implementuje zarówno listę, jak i kolejkę. LinkedList jest również często używana jako kolejka.

Wdrożenie wewnętrzne

ArrayList przechowuje swoje elementy w tablicy dynamicznej, podczas gdy LinkedList używa listy podwójnie połączonej.

Kiedy używać ArrayList i LinkedList?

ArrayList nadaje się do pracy z kolekcją tylko do odczytu, natomiast LinkedList nadaje się do pracy z kolekcją, która umożliwia różne modyfikacje danych, takie jak dodawanie i usuwanie.

Przykład połączonej listy:

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

    }

}

Przykład 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: Nowe funkcje dostępne w Javie 19

Źródło: InfoWorld Wirtualne wątki, dopasowywanie wzorców dla instrukcji switch, wektorowy interfejs API i port Linux/RISC-V pojawią się we wrześniu tego roku w Javie 19, nowej wersji języka z krótkotrwałym wsparciem. Dodatkowo w pakiecie Java Development Kit 19 wprowadzono niedawno kolejną funkcję: podgląd wzorców rekordów do nawigacji i przetwarzania danych. W ramach bieżącego planu udoskonalenia języka Java JDK 19, czyli po prostu Java 19, może zawierać ogromną liczbę funkcji, od ogólnych po obiekty wartościowe. JDK 19 będzie kolejną aktualizacją po JDK 18, wprowadzoną 22 marca 2022 r. Standardowa wersja Java jest wydawana co sześć miesięcy. Twórcy OpenJDK opublikowali oficjalny harmonogram wydań JDK 19. Zgodnie z nim stabilna wersja ukaże się 20 września. Wcześniej deweloperzy będą mogli zapoznać się ze wstępnymi kompilacjami, które ukażą się 9 czerwca i 21 lipca. Wersja Release Candidate zostanie opublikowana 11 i 25 sierpnia. Wersje wczesnego dostępu JDK 19 są dostępne pod adresem jdk.java.net/19 . Funkcje oferowane w JDK 19 obejmują:
  • Przeglądaj szablony rekordów , aby analizować wartości rekordów. Szablony rekordów i szablony typów można zagnieżdżać, aby zapewnić deklaratywną, wydajną i dającą się komponować formę nawigacji i przetwarzania danych. Ideą tej funkcji jest dodanie rozszerzenia dopasowującego wzorce w celu wyrażania bardziej złożonych złożonych zapytań o dane bez zmiany składni lub semantyki wzorców typów. Ta propozycja opiera się na dopasowywaniu wzorców wprowadzonym na przykład w JDK 16 w marcu 2021 r. Co więcej, przyszłe plany mogą wymagać rozszerzenia szablonów rekordów o takie funkcje, jak szablony tablic i szablony vararg. Wpis szablonów jest częścią projektu Amber , którego celem jest badanie i rozwijanie małych, zorientowanych na wydajność funkcji Java.

  • Podgląd funkcji obcych i interfejs API pamięci . Wprowadzi interfejs API, który umożliwi programom Java interakcję z kodem i danymi poza środowiskiem wykonawczym Java.

    Dzięki wydajnemu wywoływaniu funkcji zewnętrznych (kod poza środowiskiem wykonawczym Java) i bezpiecznemu dostępowi do pamięci zewnętrznej (pamięci nie zarządzanej przez JVM), interfejs API umożliwi programom Java wywoływanie natywnych bibliotek i przetwarzanie natywnych danych bez żadnego zagrożenia dla natywnego interfejsu Java (JNI ).

  • Podgląd wątków wirtualnych . Ta oferta wprowadza lekkie wątki, które znacznie zmniejszają wysiłek związany z pisaniem, konserwacją i monitorowaniem aplikacji równoległych o wysokiej wydajności. Ideą propozycji jest zapewnienie możliwości skalowania aplikacji serwerowych napisanych w prostym stylu thread-per-request przy optymalnym wykorzystaniu sprzętu. Umożliwi to zaimplementowanie wątków wirtualnych w kodzie korzystającym z interfejsu API java.langThread przy minimalnych zmianach oraz umożliwi rozwiązywanie problemów, debugowanie i profilowanie wątków wirtualnych przy użyciu istniejących narzędzi JDK.

  • Trzeci podgląd dopasowywania wzorców dla wyrażeń i instrukcji switch. Rozszerza dopasowanie wzorca o przełącznik, aby umożliwić testowanie wyrażenia względem wielu wzorców, z których każdy ma określoną akcję. Umożliwia to zwięzłe i bezpieczne formułowanie złożonych zapytań skoncentrowanych na danych. Ta funkcja była wcześniej dostępna w JDK 17 i JDK 18. Trzecia wersja zapoznawcza wprowadzi ulepszenia, w tym zastąpienie wzorców chronionych kiedy klauzulami w blokach przełączników. Ideą propozycji jest poszerzenie wyrazistości i możliwości zastosowania wyrażeń i operatorów przełączających.

  • Czwarta inkubacja wektorowego API będzie wyrażać obliczenia wektorowe, które niezawodnie kompilują się w czasie wykonywania w optymalne instrukcje wektorowe na obsługiwanych architekturach procesorów. Zapewni to lepszą wydajność niż równoważne obliczenia skalarne. Programiści korzystający z nowego interfejsu API będą mogli pisać złożone algorytmy wektorowe w Javie przy użyciu autowektoryzatora HotSpot, ale z niestandardowym modelem, który sprawi, że wektoryzacja będzie bardziej przewidywalna i niezawodna. Interfejs Vector API był wcześniej inkubowany w JDK 16, JDK 17 i JDK 19.

    Jako kolejny dodatek do wektorowego API, operacje całkowania bitowego na całym pasie zostaną rozszerzone o operacje takie jak zliczanie liczby jednego bitu, odwracanie kolejności bitów oraz kompresja i rozszerzanie bitów.

  • Dzięki portowi Linux/RISC-V Java zyska obsługę zestawu instrukcji sprzętowych, która jest już obsługiwana przez szeroką gamę zestawów narzędzi językowych. RISC-V to rodzina powiązanych ze sobą ISA. Port Linux/RISC-V obsługuje tylko konfigurację RISC-V RV64GV, 64-bitowy ISA ogólnego przeznaczenia, który zawiera instrukcje wektorowe.

    Port będzie obsługiwał następujące opcje maszyn wirtualnych HotSpot: interpreter szablonów, kompilator JIT C1 (klient), kompilator JIT C2 (serwer) i wszystkie obecne główne moduły zbierające elementy bezużyteczne, w tym ZGC i Shenandoah.

Podobnie jak JDK 18, JDK 19 będzie wydaniem krótkoterminowym z sześciomiesięcznym wsparciem. Poprzednia wersja, JDK 17, była wersją LTS z gwarancją wsparcia przez kilka lat. Został wprowadzony 14 września 2021 r.
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION