JavaRush /Blog Java /Random-FR /Pause café #129. Quelle est la différence entre LinkedLis...

Pause café #129. Quelle est la différence entre LinkedList et ArrayList ? Nouvelles fonctionnalités à venir dans Java 19

Publié dans le groupe Random-FR

Quelle est la différence entre LinkedList et ArrayList ?

Source : Rrtutors.com Si vous êtes nouveau dans la programmation Java, vous devez vous demander ce qu'il est préférable d'utiliser lorsque vous travaillez avec des collections : LinkedList ou ArrayList. Ces deux classes remplissent des fonctions similaires, il peut donc parfois être difficile de décider laquelle est la meilleure à utiliser dans votre travail. Dans cet article, nous définirons les différences entre les deux classes et discuterons de où et quand les utiliser. Pause café #129.  Quelle est la différence entre LinkedList et ArrayList ?  Nouvelles fonctionnalités à venir dans Java 19 - 1

Différence entre ArrayList et LinkedList en Java

Comparons ArrayList et LinkedList en fonction de leurs critères :

Manipulation

Dans les deux cas, il existe une différence dans la vitesse de manipulation du tableau. ArrayList est plus lent à manipuler les tableaux que LinkedList. Cela est dû au fait que LinkedList est basé sur des nœuds et ne nécessite pas beaucoup de décalage de bits.

Accéder

ArrayList stocke et récupère les données plus rapidement. D'un autre côté, LinkedList prend en charge un traitement des données plus rapide.

Mise en œuvre

ArrayList implémente uniquement une liste, tandis que LinkedList implémente à la fois une liste et une file d'attente. LinkedList est également souvent utilisé comme file d'attente.

Implémentation interne

Une ArrayList stocke ses éléments dans un tableau dynamique, tandis qu'une LinkedList utilise une liste doublement liée.

Quand utiliser ArrayList et LinkedList ?

ArrayList convient pour travailler avec une collection en lecture seule, tandis que LinkedList convient pour travailler avec une collection qui permet diverses modifications de données, telles que l'ajout et la suppression.

Exemple de liste liée :

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

    }

}

Exemple de liste de tableaux :

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 : Nouvelles fonctionnalités à venir dans Java 19

Source : InfoWorld Les threads virtuels, la correspondance de modèles pour les instructions switch, une API vectorielle et un port Linux/RISC-V arriveront tous en septembre dans Java 19, une nouvelle version du langage avec un support à court terme. De plus, Java Development Kit 19 a récemment introduit une autre fonctionnalité : la prévisualisation des modèles d'enregistrement pour la navigation et le traitement des données. Dans le cadre du plan continu d'amélioration du langage Java, le JDK 19, ou simplement Java 19, a le potentiel de contenir un grand nombre de fonctionnalités, depuis les génériques jusqu'aux objets de valeur. JDK 19 sera la prochaine mise à jour après JDK 18, introduit le 22 mars 2022. La version standard de Java est publiée tous les six mois. Les développeurs d'OpenJDK ont publié le calendrier de sortie officiel du JDK 19. Selon celui-ci, la version stable paraîtra le 20 septembre. Avant cela, les développeurs pourront se familiariser avec les versions préliminaires, qui seront publiées le 9 juin et le 21 juillet. Les versions candidates seront publiées les 11 et 25 août. Les versions à accès anticipé du JDK 19 sont disponibles sur jdk.java.net/19 . Les fonctionnalités proposées dans JDK 19 incluent :
  • Prévisualisez les modèles d’enregistrement pour analyser les valeurs d’enregistrement. Les modèles d'enregistrement et les modèles de types peuvent être imbriqués pour fournir une forme déclarative, puissante et composable de navigation et de traitement des données. L'idée derrière cette fonctionnalité est d'ajouter une extension de correspondance de modèles pour exprimer des requêtes de données composées plus complexes sans modifier la syntaxe ou la sémantique des modèles de type. Cette proposition est basée sur la correspondance de modèles par exempleof introduite dans le JDK 16 en mars 2021. En outre, les projets futurs pourraient nécessiter d'étendre les modèles d'enregistrement avec des fonctionnalités telles que les modèles de tableau et les modèles vararg. L'entrée des modèles fait partie du projet Amber , qui vise à explorer et à développer de petites fonctionnalités Java orientées performances.

  • Aperçu des fonctions Alien et API de mémoire . Il introduira une API qui permettra aux programmes Java d'interagir avec le code et les données en dehors du runtime Java.

    En appelant efficacement des fonctions externes (code en dehors du runtime Java) et en accédant en toute sécurité à la mémoire externe (mémoire non gérée par la JVM), l'API permettra aux programmes Java d'appeler des bibliothèques natives et de traiter des données natives sans aucune menace pour l'interface native Java (JNI). ).

  • Aperçu des fils de discussion virtuels . Cette offre introduit des threads légers qui réduisent considérablement les efforts d'écriture, de maintenance et de surveillance d'applications parallèles hautes performances. L'idée de la proposition est de fournir la possibilité de faire évoluer des applications serveur écrites dans un style simple thread par requête avec une utilisation optimale du matériel. Cela vous permettra d'implémenter des threads virtuels dans un code qui utilise l'API java.langThread avec des modifications minimes, et vous permettra de dépanner, de déboguer et de profiler les threads virtuels à l'aide des outils JDK existants.

  • Troisième aperçu de la correspondance de modèles pour les expressions et les instructions switch. Il étend la correspondance de modèles à switch pour permettre de tester une expression par rapport à un certain nombre de modèles, chacun ayant une action spécifique. Cela permet d’exprimer des requêtes complexes centrées sur les données de manière concise et sûre. Cette fonctionnalité a été précédemment présentée en avant-première dans JDK 17 et JDK 18. La troisième version ajoutera des améliorations, notamment le remplacement des modèles protégés lorsque par des clauses dans les blocs de commutation. L'idée de la proposition est d'étendre l'expressivité et l'applicabilité des expressions et opérateurs de commutation.

  • La quatrième incubation de l'API vectorielle exprimera des calculs vectoriels qui se compileront de manière fiable au moment de l'exécution en instructions vectorielles optimales sur les architectures de processeur prises en charge. Cela offrira de meilleures performances que les calculs scalaires équivalents. Les développeurs utilisant la nouvelle API pourront écrire des algorithmes vectoriels complexes en Java à l'aide du vecteur automatique de HotSpot, mais avec un modèle personnalisé qui rend la vectorisation plus prévisible et plus fiable. L'API Vector a déjà été incubée dans JDK 16, JDK 17 et JDK 19.

    Autre ajout à l'API vectorielle, les opérations intégrales au niveau de la voie seront étendues pour inclure des opérations telles que le comptage du nombre de bits, l'inversion de l'ordre des bits, ainsi que la compression et l'expansion des bits.

  • Avec le port Linux/RISC-V , Java bénéficiera d'un support de jeu d'instructions matériel déjà pris en charge par un large éventail de boîtes à outils linguistiques. RISC-V est une famille d'ISA connexes. Le port Linux/RISC-V ne prendra en charge que la configuration RV64GV RISC-V, un ISA à usage général de 64 bits qui inclut des instructions vectorielles.

    Le port prendra en charge les options de machine virtuelle HotSpot suivantes : interpréteur de modèles, compilateur JIT C1 (client), compilateur JIT C2 (serveur) et tous les principaux ramasse-miettes actuels, y compris ZGC et Shenandoah.

Comme le JDK 18, le JDK 19 sera une version à court terme avec six mois de support. La version précédente, JDK 17, était une version LTS avec un support garanti pendant plusieurs années. Il a été introduit le 14 septembre 2021.
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION