JavaRush /Java Blog /Random-IT /Pausa caffè #129. Qual è la differenza tra LinkedList e A...

Pausa caffè #129. Qual è la differenza tra LinkedList e ArrayList? Nuove funzionalità in arrivo in Java 19

Pubblicato nel gruppo Random-IT

Qual è la differenza tra LinkedList e ArrayList?

Fonte: Rrtutors.com Se sei nuovo alla programmazione Java, ti starai chiedendo quale sia meglio usare quando si lavora con le raccolte: LinkedList o ArrayList. Entrambe queste classi svolgono funzioni simili, quindi a volte può essere difficile decidere quale sia meglio utilizzare nel proprio lavoro. In questo post definiremo le differenze tra le due classi e discuteremo dove e quando utilizzarle. Pausa caffè #129.  Qual è la differenza tra LinkedList e ArrayList?  Nuove funzionalità in arrivo in Java 19 - 1

Differenza tra ArrayList e LinkedList in Java

Confrontiamo ArrayList e LinkedList in base ai loro criteri:

Manipolazione

In entrambi i casi c'è una differenza nella velocità di manipolazione dell'array. ArrayList è più lento nel manipolare gli array rispetto a LinkedList. Ciò è dovuto al fatto che LinkedList è basato su nodi e non richiede molto spostamento di bit.

Accesso

ArrayList archivia e recupera i dati più velocemente. D'altra parte, LinkedList supporta un'elaborazione dei dati più rapida.

Implementazione

ArrayList implementa solo un elenco, mentre LinkedList implementa sia un elenco che una coda. LinkedList viene spesso utilizzato anche come coda.

Implementazione interna

Un ArrayList memorizza i suoi elementi in un array dinamico, mentre un LinkedList utilizza un elenco doppiamente collegato.

Quando utilizzare ArrayList e LinkedList?

ArrayList è adatto per lavorare con una raccolta di sola lettura, mentre LinkedList è adatto per lavorare con una raccolta che consente varie modifiche ai dati, come l'aggiunta e l'eliminazione.

Esempio di lista collegata:

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

    }

}

Esempio di 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: nuove funzionalità in arrivo in Java 19

Fonte: InfoWorld I thread virtuali, la corrispondenza dei modelli per le istruzioni switch, un'API vettoriale e un port Linux/RISC-V arriveranno questo settembre in Java 19, una nuova versione del linguaggio con supporto a breve termine. Inoltre, Java Development Kit 19 ha recentemente introdotto un'altra funzionalità: l'anteprima dei modelli di record per la navigazione e l'elaborazione dei dati. Nell'ambito del piano in corso per migliorare il linguaggio Java, JDK 19, o semplicemente Java 19, ha il potenziale per contenere un numero enorme di funzionalità, dai generici agli oggetti di valore. JDK 19 sarà il prossimo aggiornamento dopo JDK 18, introdotto il 22 marzo 2022. La versione standard di Java viene rilasciata ogni sei mesi. Gli sviluppatori di OpenJDK hanno pubblicato il programma di rilascio ufficiale per JDK 19. Secondo esso, la versione stabile apparirà il 20 settembre. Prima di ciò, gli sviluppatori potranno familiarizzare con le build preliminari, che verranno rilasciate il 9 giugno e il 21 luglio. Le release candidate verranno pubblicate l'11 e il 25 agosto. Le build ad accesso anticipato di JDK 19 sono disponibili su jdk.java.net/19 . Le funzionalità offerte in JDK 19 includono:
  • Anteprima dei modelli di record per analizzare i valori dei record. I modelli di record e i modelli di tipo possono essere nidificati per fornire una forma dichiarativa, potente e componibile di navigazione ed elaborazione dei dati. L'idea alla base di questa funzionalità è aggiungere un'estensione di corrispondenza dei modelli per esprimere query di dati composte più complesse senza modificare la sintassi o la semantica dei modelli di tipo. Questa proposta si basa sul modello di corrispondenza introdotto ad esempio in JDK 16 nel marzo 2021. Inoltre, i piani futuri potrebbero richiedere l'estensione dei modelli di record con funzionalità quali modelli di array e modelli vararg. La voce dei modelli fa parte del progetto Amber , che mira a esplorare e sviluppare piccole funzionalità Java orientate alle prestazioni.

  • Anteprima della funzione Alien e API di memoria . Introdurrà un'API che consente ai programmi Java di interagire con codice e dati al di fuori del runtime Java.

    Chiamando in modo efficiente funzioni esterne (codice esterno al runtime Java) e accedendo in modo sicuro alla memoria esterna (memoria non gestita dalla JVM), l'API consentirà ai programmi Java di chiamare librerie native ed elaborare dati nativi senza alcuna minaccia per Java Native Interface (JNI ).

  • Anteprima dei thread virtuali . Questa offerta introduce thread leggeri che riducono notevolmente lo sforzo di scrittura, manutenzione e monitoraggio di applicazioni parallele ad alte prestazioni. L'idea della proposta è quella di fornire la possibilità di scalare le applicazioni server scritte in un semplice stile thread-per-request con un uso ottimale dell'hardware. Ciò ti consentirà di implementare thread virtuali nel codice che utilizza l'API java.langThread con modifiche minime e di risolvere i problemi, eseguire il debug e profilare i thread virtuali utilizzando gli strumenti JDK esistenti.

  • Terza anteprima della corrispondenza dei modelli per espressioni e istruzioni switch. Estende la corrispondenza dei modelli per consentire di testare un'espressione rispetto a un numero di modelli, ognuno dei quali ha un'azione specifica. Ciò consente di esprimere query complesse incentrate sui dati in modo conciso e sicuro. Questa funzionalità era stata precedentemente presentata in anteprima in JDK 17 e JDK 18. La terza anteprima aggiungerà miglioramenti, inclusa la sostituzione dei pattern protected When con clausole nei blocchi switch. L'idea della proposta è espandere l'espressività e l'applicabilità delle espressioni e degli operatori di commutazione.

  • La quarta incubazione dell'API vettoriale esprimerà calcoli vettoriali che vengono compilati in modo affidabile in fase di esecuzione in istruzioni vettoriali ottimali sulle architetture dei processori supportate. Ciò fornirà prestazioni migliori rispetto ai calcoli scalari equivalenti. Gli sviluppatori che utilizzano la nuova API saranno in grado di scrivere algoritmi vettoriali complessi in Java utilizzando l'autovettoriatore di HotSpot, ma con un modello personalizzato che rende la vettorizzazione più prevedibile e affidabile. L'API Vector è stata precedentemente incubata in JDK 16, JDK 17 e JDK 19.

    Come ulteriore aggiunta all'API vettoriale, le operazioni lanewide integrali bit per bit verranno ampliate per includere operazioni come il conteggio del numero di bit uno, l'inversione dell'ordine dei bit e la compressione ed espansione dei bit.

  • Con il port Linux/RISC-V , Java otterrà il supporto del set di istruzioni hardware già supportato da un'ampia gamma di toolkit linguistici. RISC-V è una famiglia di ISA correlati. La porta Linux/RISC-V supporterà solo la configurazione RV64GV RISC-V, un ISA a 64 bit per uso generale che include istruzioni vettoriali.

    Il port supporterà le seguenti opzioni della macchina virtuale HotSpot: interprete di modelli, compilatore JIT C1 (client), compilatore JIT C2 (server) e tutti i principali garbage collector attuali, inclusi ZGC e Shenandoah.

Come JDK 18, JDK 19 sarà una versione a breve termine con sei mesi di supporto. La versione precedente, JDK 17, era una versione LTS con supporto garantito per diversi anni. È stato introdotto il 14 settembre 2021.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION