JavaRush /Blog Java /Random-ES /Pausa para el café #129. ¿Cuál es la diferencia entre Lin...

Pausa para el café #129. ¿Cuál es la diferencia entre LinkedList y ArrayList? Nuevas características que vienen en Java 19

Publicado en el grupo Random-ES

¿Cuál es la diferencia entre LinkedList y ArrayList?

Fuente: Rrtutors.com Si es nuevo en la programación Java, debe preguntarse cuál es mejor usar cuando trabaja con colecciones: LinkedList o ArrayList. Ambas clases realizan funciones similares, por lo que a veces puede resultar difícil decidir cuál es mejor utilizar en su trabajo. En esta publicación, definiremos las diferencias entre las dos clases y discutiremos dónde y cuándo usarlas. Pausa para el café #129.  ¿Cuál es la diferencia entre LinkedList y ArrayList?  Nuevas características que vienen en Java 19 - 1

Diferencia entre ArrayList y LinkedList en Java

Comparemos ArrayList y LinkedList según sus criterios:

Manipulación

En ambos casos existe una diferencia en la velocidad de manipulación de la matriz. ArrayList es más lento para manipular matrices que LinkedList. Esto se debe al hecho de que LinkedList está basado en nodos y no requiere mucho cambio de bits.

Acceso

ArrayList almacena y recupera datos más rápido. Por otro lado, LinkedList admite un procesamiento de datos más rápido.

Implementación

ArrayList implementa solo una lista, mientras que LinkedList implementa tanto una lista como una cola. LinkedList también se utiliza a menudo como cola.

Implementación interna

Una ArrayList almacena sus elementos en una matriz dinámica, mientras que una LinkedList usa una lista doblemente enlazada.

¿Cuándo utilizar ArrayList y LinkedList?

ArrayList es adecuado para trabajar con una colección de solo lectura, mientras que LinkedList es adecuado para trabajar con una colección que permite diversas modificaciones de datos, como agregar y eliminar.

Ejemplo de lista enlazada:

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

    }

}

Ejemplo de lista de matrices:

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: Nuevas funciones que llegarán a Java 19

Fuente: InfoWorld Hilos virtuales, coincidencia de patrones para declaraciones de cambio, una API vectorial y un puerto Linux/RISC-V llegarán en septiembre en Java 19, una nueva versión del lenguaje con soporte a corto plazo. Además, Java Development Kit 19 introdujo recientemente otra característica: obtener una vista previa de los patrones de registro para la navegación y el procesamiento de datos. Como parte del plan en curso para mejorar el lenguaje Java, JDK 19, o simplemente Java 19, tiene el potencial de contener una gran cantidad de características, desde genéricas hasta objetos de valor. JDK 19 será la próxima actualización después de JDK 18, presentada el 22 de marzo de 2022. La versión estándar de Java se publica cada seis meses. Los desarrolladores de OpenJDK han publicado el calendario de lanzamiento oficial de JDK 19. Según él, la versión estable aparecerá el 20 de septiembre. Antes de esto, los desarrolladores podrán familiarizarse con las versiones preliminares, que se lanzarán el 9 de junio y el 21 de julio. Los candidatos a lanzamiento se publicarán el 11 y 25 de agosto. Las versiones de acceso anticipado de JDK 19 están disponibles en jdk.java.net/19 . Las características ofrecidas en JDK 19 incluyen:
  • Obtenga una vista previa de las plantillas de registros para analizar los valores de los registros. Las plantillas de registro y las plantillas de tipo se pueden anidar para proporcionar una forma declarativa, potente y componible de navegación y procesamiento de datos. La idea detrás de esta característica es agregar una extensión de coincidencia de patrones para expresar consultas de datos compuestos más complejas sin cambiar la sintaxis o la semántica de los patrones de tipos. Esta propuesta se basa en la coincidencia de patrones, por ejemplo, introducida en JDK 16 en marzo de 2021. Además, es posible que los planes futuros requieran ampliar las plantillas de registros con características como plantillas de matriz y plantillas vararg. La entrada de plantillas es parte del Proyecto Amber , cuyo objetivo es explorar y desarrollar pequeñas características de Java orientadas al rendimiento.

  • Vista previa de funciones alienígenas y API de memoria . Introducirá una API que permitirá a los programas Java interactuar con código y datos fuera del tiempo de ejecución de Java.

    Al llamar de manera eficiente a funciones externas (código fuera del tiempo de ejecución de Java) y acceder de forma segura a la memoria externa (memoria no administrada por la JVM), la API permitirá que los programas Java llamen a bibliotecas nativas y procesen datos nativos sin ninguna amenaza para la Interfaz Nativa de Java (JNI). ).

  • Vista previa de hilos virtuales . Esta oferta introduce subprocesos ligeros que reducen en gran medida el esfuerzo de escribir, mantener y monitorear aplicaciones paralelas de alto rendimiento. La idea de la propuesta es brindar la capacidad de escalar aplicaciones de servidor escritas en un estilo simple de subproceso por solicitud con un uso óptimo del hardware. Esto le permitirá implementar subprocesos virtuales en código que utiliza la API java.langThread con cambios mínimos y le permitirá solucionar problemas, depurar y perfilar subprocesos virtuales utilizando herramientas JDK existentes.

  • Tercera vista previa de la coincidencia de patrones para expresiones y declaraciones de cambio. Extiende la coincidencia de patrones para cambiar y permitir que una expresión se pruebe con varios patrones, cada uno de los cuales tiene una acción específica. Esto permite expresar consultas complejas centradas en datos de forma concisa y segura. Esta característica se presentó previamente en JDK 17 y JDK 18. La tercera vista previa agregará mejoras, incluido el reemplazo de patrones protegidos cuando con cláusulas en bloques de interruptores. La idea de la propuesta es ampliar la expresividad y aplicabilidad de las expresiones y operadores de cambio.

  • La cuarta incubación de la API vectorial expresará cálculos vectoriales que se compilan de manera confiable en tiempo de ejecución en instrucciones vectoriales óptimas en arquitecturas de procesador compatibles. Esto proporcionará un mejor rendimiento que los cálculos escalares equivalentes. Los desarrolladores que utilicen la nueva API podrán escribir algoritmos vectoriales complejos en Java utilizando el autovectorizador de HotSpot, pero con un modelo personalizado que hace que la vectorización sea más predecible y confiable. El Vector API se incubó previamente en JDK 16, JDK 17 y JDK 19.

    Como otra adición a la API vectorial, las operaciones de carril integral bit a bit se ampliarán para incluir operaciones como contar el número de bits, invertir el orden de los bits y compresión y expansión de bits.

  • Con el puerto Linux/RISC-V , Java obtendrá soporte para conjuntos de instrucciones de hardware que ya son compatibles con una amplia gama de kits de herramientas de lenguajes. RISC-V es una familia de ISA relacionados. El puerto Linux/RISC-V solo admitirá la configuración RV64GV RISC-V, un ISA de propósito general de 64 bits que incluye instrucciones vectoriales.

    El puerto admitirá las siguientes opciones de máquina virtual HotSpot: intérprete de plantillas, compilador JIT C1 (cliente), compilador JIT C2 (servidor) y todos los principales recolectores de basura actuales, incluidos ZGC y Shenandoah.

Al igual que JDK 18, JDK 19 será un lanzamiento a corto plazo con seis meses de soporte. La versión anterior, JDK 17, era una versión LTS con soporte garantizado durante varios años. Se introdujo el 14 de septiembre de 2021.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION