JavaRush /Blogue Java /Random-PT /Pausa para café #129. Qual é a diferença entre LinkedList...

Pausa para café #129. Qual é a diferença entre LinkedList e ArrayList? Novos recursos chegando no Java 19

Publicado no grupo Random-PT

Qual é a diferença entre LinkedList e ArrayList?

Fonte: Rrtutors.com Se você é novo em programação Java, deve estar se perguntando qual é melhor usar ao trabalhar com coleções: LinkedList ou ArrayList. Ambas as classes executam funções semelhantes, por isso às vezes pode ser difícil decidir qual delas é melhor usar em seu trabalho. Neste post, definiremos as diferenças entre as duas classes e discutiremos onde e quando usá-las. Pausa para café #129.  Qual é a diferença entre LinkedList e ArrayList?  Novos recursos chegando no Java 19-1

Diferença entre ArrayList e LinkedList em Java

Vamos comparar ArrayList e LinkedList com base em seus critérios:

Manipulação

Em ambos os casos há uma diferença na velocidade de manipulação do array. ArrayList é mais lento para manipular arrays do que LinkedList. Isso se deve ao fato de que o LinkedList é baseado em nós e não requer muita mudança de bits.

Acesso

ArrayList armazena e recupera dados com mais rapidez. Por outro lado, o LinkedList suporta processamento de dados mais rápido.

Implementação

ArrayList implementa apenas uma lista, enquanto LinkedList implementa uma lista e uma fila. LinkedList também é frequentemente usado como fila.

Implementação interna

Um ArrayList armazena seus elementos em um array dinâmico, enquanto um LinkedList usa uma lista duplamente vinculada.

Quando usar ArrayList e LinkedList?

ArrayList é adequado para trabalhar com uma coleção somente leitura, enquanto LinkedList é adequado para trabalhar com uma coleção que permite diversas modificações de dados, como adição e exclusão.

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

    }

}

Exemplo de 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: Novos recursos chegando no Java 19

Fonte: InfoWorld Threads virtuais, correspondência de padrões para instruções switch, uma API de vetor e uma porta Linux/RISC-V estão chegando em setembro no Java 19, uma nova versão da linguagem com suporte de curto prazo. Além disso, o Java Development Kit 19 introduziu recentemente outro recurso: visualização de padrões de registro para navegação e processamento de dados. Como parte do plano contínuo para melhorar a linguagem Java, o JDK 19, ou simplesmente Java 19, tem potencial para conter um grande número de recursos, desde genéricos até objetos de valor. O JDK 19 será a próxima atualização após o JDK 18, introduzido em 22 de março de 2022. A versão padrão do Java é lançada a cada seis meses. Os desenvolvedores do OpenJDK publicaram o cronograma oficial de lançamento do JDK 19. Segundo ele, a versão estável aparecerá em 20 de setembro. Antes disso, os desenvolvedores poderão se familiarizar com as compilações preliminares, que serão lançadas nos dias 9 de junho e 21 de julho. Os release candidate serão publicados em 11 e 25 de agosto. Compilações de acesso antecipado do JDK 19 estão disponíveis em jdk.java.net/19 . Os recursos oferecidos no JDK 19 incluem:
  • Visualize modelos de registro para analisar valores de registro. Modelos de registro e modelos de tipo podem ser aninhados para fornecer uma forma declarativa, poderosa e combinável de navegação e processamento de dados. A ideia por trás desse recurso é adicionar uma extensão de correspondência de padrões para expressar consultas de dados compostos mais complexas sem alterar a sintaxe ou a semântica dos padrões de tipo. Esta proposta é baseada na correspondência de padrões, por exemplo, introduzida no JDK 16 em março de 2021. Além disso, planos futuros podem exigir a extensão de modelos de registro com recursos como modelos de array e modelos vararg. A entrada de templates faz parte do Projeto Amber , que tem como objetivo explorar e desenvolver pequenos recursos Java orientados para desempenho.

  • Visualização de função alienígena e API de memória . Ele apresentará uma API que permite que programas Java interajam com código e dados fora do tempo de execução Java.

    Ao chamar com eficiência funções externas (código fora do tempo de execução Java) e acessar com segurança a memória externa (memória não gerenciada pela JVM), a API permitirá que programas Java chamem bibliotecas nativas e processem dados nativos sem qualquer ameaça à Java Native Interface (JNI). ).

  • Visualização de threads virtuais . Esta oferta introduz threads leves que reduzem bastante o esforço de gravação, manutenção e monitoramento de aplicativos paralelos de alto desempenho. A ideia da proposta é fornecer a capacidade de escalar aplicativos de servidor escritos em um estilo simples de thread por solicitação com uso otimizado de hardware. Isso permitirá que você implemente threads virtuais em código que usa a API java.langThread com alterações mínimas e permitirá solucionar problemas, depurar e criar perfil de threads virtuais usando ferramentas JDK existentes.

  • Terceira visualização da correspondência de padrões para expressões e instruções switch. Ele estende a correspondência de padrões para switch para permitir que uma expressão seja testada em relação a vários padrões, cada um dos quais com uma ação específica. Isso permite que consultas complexas centradas em dados sejam expressas de forma concisa e segura. Este recurso foi visualizado anteriormente no JDK 17 e JDK 18. A terceira visualização adicionará melhorias, incluindo a substituição de padrões protegidos quando por cláusulas em blocos switch. A ideia da proposta é ampliar a expressividade e aplicabilidade de expressões e operadores switch.

  • A quarta incubação da API vetorial expressará cálculos vetoriais que são compilados de forma confiável em tempo de execução em instruções vetoriais ideais em arquiteturas de processador suportadas. Isso fornecerá melhor desempenho do que cálculos escalares equivalentes. Os desenvolvedores que usarem a nova API poderão escrever algoritmos vetoriais complexos em Java usando o autovetorizador do HotSpot, mas com um modelo personalizado que torna a vetorização mais previsível e confiável. A API Vector foi incubada anteriormente no JDK 16, JDK 17 e JDK 19.

    Como outra adição à API vetorial, as operações integrais bit a bit em toda a faixa serão expandidas para incluir operações como contagem do número de um bit, reversão da ordem dos bits e compressão e expansão de bits.

  • Com a porta Linux/RISC-V , Java ganhará suporte ao conjunto de instruções de hardware que já é suportado por uma ampla gama de kits de ferramentas de linguagem. RISC-V é uma família de ISAs relacionadas. A porta Linux/RISC-V suportará apenas a configuração RV64GV RISC-V, um ISA de uso geral de 64 bits que inclui instruções vetoriais.

    A porta suportará as seguintes opções de máquina virtual HotSpot: interpretador de modelo, compilador JIT C1 (cliente), compilador JIT C2 (servidor) e todos os principais coletores de lixo atuais, incluindo ZGC e Shenandoah.

Assim como o JDK 18, o JDK 19 será um lançamento de curto prazo com seis meses de suporte. A versão anterior, JDK 17, era uma versão LTS com suporte garantido por vários anos. Foi introduzido em 14 de setembro de 2021.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION