JavaRush /Java 博客 /Random-ZH /喝咖啡休息#129。LinkedList 和 ArrayList 有什么区别?Java 19 中的新功能

喝咖啡休息#129。LinkedList 和 ArrayList 有什么区别?Java 19 中的新功能

已在 Random-ZH 群组中发布

LinkedList 和 ArrayList 有什么区别?

来源:Rrtutors.com 如果您是 Java 编程新手,您一定想知道在处理集合时使用哪个更好:LinkedList 或 ArrayList。这两个类都执行类似的功能,因此有时很难决定在工作中更适合使用哪一个。在这篇文章中,我们将定义这两个类之间的差异,并讨论何时何地使用它们。 喝咖啡休息#129。 LinkedList 和 ArrayList 有什么区别? Java 19 - 1 中的新功能

Java中ArrayList和LinkedList的区别

让我们根据它们的标准来比较 ArrayList 和 LinkedList:

操纵

在这两种情况下,数组操作的速度都存在差异。ArrayList 操作数组的速度比 LinkedList 慢。这是因为 LinkedList 是基于节点的,不需要太多的位移。

使用权

ArrayList 存储和检索数据的速度更快。另一方面,LinkedList 支持更快的数据处理。

执行

ArrayList仅实现列表,而LinkedList同时实现列表和队列。LinkedList也经常被用作队列。

内部实施

ArrayList 将其元素存储在动态数组中,而 LinkedList 使用双向链表。

什么时候使用ArrayList和LinkedList?

ArrayList适合使用只读集合,而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);

    }

}

数组列表示例:

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:Java 19 中的新功能

来源:InfoWorld 虚拟线程、switch 语句的模式匹配、向量 API 和 Linux/RISC-V 端口都将于今年 9 月在 Java 19 中推出,Java 19 是该语言的一个新版本,提供短期支持。此外,Java Development Kit 19 最近引入了另一个功能:预览数据导航和处理的记录模式。作为正在进行的 Java 语言改进计划的一部分,JDK 19(或简称 Java 19)有可能包含大量功能,从泛型到值对象。JDK 19 将是继 2022 年 3 月 22 日推出的 JDK 18 之后的下一个更新。Java 的标准版本每六个月发布一次。OpenJDK 开发者已经公布了 JDK 19 的官方发布时间表。据了解,稳定版本将于 9 月 20 日发布。在此之前,开发人员将能够熟悉将于 6 月 9 日和 7 月 21 日发布的初步版本。候选版本将于 8 月 11 日和 8 月 25 日发布。JDK 19 的早期访问版本可从jdk.java.net/19获取。JDK 19 中提供的功能包括:
  • 预览记录模板以解析记录值。记录模板和类型模板可以嵌套,以提供声明性、强大且可组合的导航和数据处理形式。此功能背后的想法是添加模式匹配扩展来表达更复杂的复合数据查询,而无需更改类型模式的语法或语义。该提案基于 2021 年 3 月 JDK 16 中引入的 instanceof 的模式匹配。此外,未来的计划可能需要使用数组模板和可变参数模板等功能来扩展记录模板。模板条目是Project Amber的一部分,该项目旨在探索和开发小型的、面向性能的 Java 功能。

  • Alien 函数预览和内存 API。它将引入一个 API,允许 Java 程序与 Java 运行时之外的代码和数据进行交互。

    通过高效地调用外部函数(Java 运行时之外的代码)和安全地访问外部内存(不由 JVM 管理的内存),API 将允许 Java 程序调用本机库并处理本机数据,而不会对 Java 本机接口 (JNI) 造成任何威胁。 )。

  • 虚拟线程的预览。该产品引入了轻量级线程,大大减少了编写、维护和监视高性能并行应用程序的工作量。该提案的想法是提供扩展以简单的每个请求线程风格编写的服务器应用程序的能力,并优化硬件的使用。这将允许您将虚拟线程实现到使用java.langThread API 的代码中,只需进行最少的更改,并允许您使用现有的 JDK 工具对虚拟线程进行故障排除、调试和分析。

  • 表达式和 switch 语句的模式匹配的第三次预览。它将模式匹配扩展为 switch,以允许针对多个模式测试表达式,每个模式都有一个特定的操作。这使得以数据为中心的复杂查询能够简洁、安全地表达。此功能之前已在 JDK 17 和 JDK 18 中预览过。第三个预览版将添加改进,包括用 switch 块中的子句替换 protected when 模式。该提案的想法是扩展 switch 表达式和运算符的表达能力和适用性。

  • 矢量 API 的第四次孵化将表达矢量计算,这些计算在运行时可靠地编译成支持的处理器架构上的最佳矢量指令。这将提供比同等标量计算更好的性能。使用新 API 的开发人员将能够使用 HotSpot 的自动向量化器在 Java 中编写复杂的向量算法,但使用自定义模型可以使向量化更加可预测和可靠。Vector API 之前在 JDK 16、JDK 17 和 JDK 19 中孵化。

    作为向量 API 的另一项补充,按位积分通道运算将得到扩展,包括计算 1 位的数量、反转位顺序以及位压缩和扩展等操作。

  • 借助Linux/RISC-V移植,Java将获得多种语言工具包已经支持的硬件指令集支持。RISC-V 是一系列相关 ISA。Linux/RISC-V 端口仅支持 RV64GV RISC-V 配置,这是一种包含向量指令的 64 位通用 ISA。

    该端口将支持以下 HotSpot 虚拟机选项:模板解释器、JIT 编译器 C1(客户端)、JIT 编译器 C2(服务器)以及当前所有主要垃圾收集器,包括 ZGC 和 Shenandoah。

与 JDK 18 一样,JDK 19 将是一个短期版本,提供六个月的支持。之前的版本 JDK 17 是 LTS 版本,提供多年的支持保证。它于 2021 年 9 月 14 日推出。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION