JavaRush /Blog Java /Random-VI /Nghỉ giải lao #129. Sự khác biệt giữa LinkedList và Array...

Nghỉ giải lao #129. Sự khác biệt giữa LinkedList và ArrayList là gì? Các tính năng mới sắp có trong Java 19

Xuất bản trong nhóm

Sự khác biệt giữa LinkedList và ArrayList là gì?

Nguồn: Rrtutors.com Nếu bạn là người mới làm quen với lập trình Java, chắc hẳn bạn đang tự hỏi nên sử dụng cái nào tốt hơn khi làm việc với các bộ sưu tập: LinkedList hoặc ArrayList. Cả hai lớp này đều thực hiện các chức năng tương tự nhau, vì vậy đôi khi có thể khó quyết định nên sử dụng lớp nào tốt hơn trong công việc của bạn. Trong bài đăng này, chúng tôi sẽ xác định sự khác biệt giữa hai lớp và thảo luận về vị trí và thời điểm sử dụng chúng. Nghỉ giải lao #129.  Sự khác biệt giữa LinkedList và ArrayList là gì?  Các tính năng mới sắp có trong Java 19 - 1

Sự khác biệt giữa ArrayList và LinkedList trong Java

Hãy so sánh ArrayList và LinkedList dựa trên tiêu chí của chúng:

Thao tác

Trong cả hai trường hợp đều có sự khác biệt về tốc độ thao tác mảng. ArrayList xử lý mảng chậm hơn LinkedList. Điều này là do thực tế là LinkedList dựa trên nút và không yêu cầu dịch chuyển nhiều bit.

Truy cập

ArrayList lưu trữ và truy xuất dữ liệu nhanh hơn. Mặt khác, LinkedList hỗ trợ xử lý dữ liệu nhanh hơn.

Thực hiện

ArrayList chỉ thực hiện một danh sách, trong khi LinkedList thực hiện cả danh sách và hàng đợi. LinkedList cũng thường được sử dụng làm hàng đợi.

Triển khai nội bộ

ArrayList lưu trữ các phần tử của nó trong một mảng động, trong khi LinkedList sử dụng danh sách liên kết đôi.

Khi nào nên sử dụng ArrayList và LinkedList?

ArrayList phù hợp để làm việc với bộ sưu tập chỉ đọc, trong khi LinkedList phù hợp để làm việc với bộ sưu tập cho phép sửa đổi nhiều dữ liệu khác nhau, chẳng hạn như thêm và xóa.

Ví dụ về Danh sách liên kết:

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

    }

}

Ví dụ về 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: Các tính năng mới sắp có trong Java 19

Nguồn: InfoWorld Các luồng ảo, khớp mẫu cho các câu lệnh chuyển đổi, API vectơ và cổng Linux/RISC-V đều sẽ ra mắt vào tháng 9 này trong Java 19, một bản phát hành mới của ngôn ngữ này với sự hỗ trợ ngắn hạn. Ngoài ra, Bộ công cụ phát triển Java 19 gần đây đã giới thiệu một tính năng khác: xem trước các mẫu Bản ghi để điều hướng và xử lý dữ liệu. Là một phần trong kế hoạch đang diễn ra nhằm cải thiện ngôn ngữ Java, JDK 19, hay đơn giản là Java 19, có tiềm năng chứa một số lượng lớn các tính năng, từ các đối tượng chung đến các đối tượng giá trị. JDK 19 sẽ là bản cập nhật tiếp theo sau JDK 18, được giới thiệu vào ngày 22 tháng 3 năm 2022. Phiên bản tiêu chuẩn của Java được phát hành sáu tháng một lần. Các nhà phát triển OpenJDK đã công bố lịch phát hành chính thức cho JDK 19. Theo đó, bản phát hành ổn định sẽ xuất hiện vào ngày 20 tháng 9. Trước đó, các nhà phát triển sẽ có thể làm quen với các bản dựng sơ bộ sẽ được phát hành vào ngày 9 tháng 6 và ngày 21 tháng 7. Các ứng cử viên phát hành sẽ được công bố vào ngày 11 tháng 8 và ngày 25 tháng 8. Các bản dựng quyền truy cập sớm của JDK 19 có sẵn tại jdk.java.net/19 . Các tính năng được cung cấp trong JDK 19 bao gồm:
  • Xem trước các mẫu bản ghi để phân tích các giá trị bản ghi. Các mẫu bản ghi và mẫu loại có thể được lồng vào nhau để cung cấp một hình thức điều hướng và xử lý dữ liệu có tính khai báo, mạnh mẽ và có thể kết hợp được. Ý tưởng đằng sau tính năng này là thêm phần mở rộng khớp mẫu để thể hiện các truy vấn dữ liệu phức hợp phức tạp hơn mà không thay đổi cú pháp hoặc ngữ nghĩa của các mẫu kiểu. Đề xuất này dựa trên việc so khớp mẫu với instanceof được giới thiệu trong JDK 16 vào tháng 3 năm 2021. Hơn nữa, các kế hoạch trong tương lai có thể yêu cầu mở rộng các mẫu bản ghi với các tính năng như mẫu mảng và mẫu vararg. Mục nhập mẫu là một phần của Project Amber , nhằm mục đích khám phá và phát triển các tính năng Java nhỏ, hướng đến hiệu suất.

  • API bộ nhớ và xem trước chức năng của người ngoài hành tinh . Nó sẽ giới thiệu một API cho phép các chương trình Java tương tác với mã và dữ liệu bên ngoài thời gian chạy Java.

    Bằng cách gọi các hàm bên ngoài một cách hiệu quả (mã bên ngoài thời gian chạy Java) và truy cập bộ nhớ ngoài một cách an toàn (bộ nhớ không được JVM quản lý), API sẽ cho phép các chương trình Java gọi các thư viện gốc và xử lý dữ liệu gốc mà không có bất kỳ mối đe dọa nào đối với Giao diện gốc Java (JNI). ).

  • Xem trước các chủ đề ảo . Sản phẩm này giới thiệu các luồng nhẹ giúp giảm đáng kể nỗ lực viết, duy trì và giám sát các ứng dụng song song hiệu suất cao. Ý tưởng của đề xuất là cung cấp khả năng mở rộng quy mô các ứng dụng máy chủ được viết theo kiểu luồng theo yêu cầu đơn giản với việc sử dụng phần cứng tối ưu. Điều này sẽ cho phép bạn triển khai các luồng ảo thành mã sử dụng API java.langThread với những thay đổi tối thiểu và cho phép bạn khắc phục sự cố, gỡ lỗi và lập hồ sơ các luồng ảo bằng các công cụ JDK hiện có.

  • Bản xem trước thứ ba của việc khớp mẫu cho các biểu thức và câu lệnh chuyển đổi. Nó mở rộng việc so khớp mẫu để chuyển đổi nhằm cho phép kiểm tra một biểu thức dựa trên một số mẫu, mỗi mẫu có một hành động cụ thể. Điều này cho phép các truy vấn tập trung vào dữ liệu phức tạp được thể hiện một cách chính xác và an toàn. Tính năng này trước đây đã được xem trước trong JDK 17 và JDK 18. Bản xem trước thứ ba sẽ bổ sung các cải tiến, bao gồm việc thay thế các mẫu được bảo vệ khi bằng các mệnh đề trong khối chuyển đổi. Ý tưởng của đề xuất là mở rộng tính biểu cảm và khả năng ứng dụng của các biểu thức và toán tử chuyển đổi.

  • Lần ủ thứ tư của API vectơ sẽ thể hiện các tính toán vectơ được biên dịch một cách đáng tin cậy trong thời gian chạy thành các hướng dẫn vectơ tối ưu trên các kiến ​​trúc bộ xử lý được hỗ trợ. Điều này sẽ mang lại hiệu suất tốt hơn so với các phép tính vô hướng tương đương. Các nhà phát triển sử dụng API mới sẽ có thể viết các thuật toán vectơ phức tạp trong Java bằng cách sử dụng trình vector tự động của HotSpot, nhưng với một mô hình tùy chỉnh giúp quá trình vector hóa dễ dự đoán và đáng tin cậy hơn. API Vector trước đây đã được ươm tạo trong JDK 16, JDK 17 và JDK 19.

    Là một bổ sung khác cho API vectơ, các hoạt động trên toàn làn đường tích phân theo bit sẽ được mở rộng để bao gồm các hoạt động như đếm số bit một, đảo ngược thứ tự bit cũng như nén và mở rộng bit.

  • Với cổng Linux/RISC-V , Java sẽ nhận được sự hỗ trợ tập lệnh phần cứng đã được hỗ trợ bởi nhiều bộ công cụ ngôn ngữ. RISC-V là một họ các ISA có liên quan. Cổng Linux/RISC-V sẽ chỉ hỗ trợ cấu hình RV64GV RISC-V, ISA đa năng 64-bit bao gồm các lệnh vectơ.

    Cổng sẽ hỗ trợ các tùy chọn máy ảo HotSpot sau: trình thông dịch mẫu, trình biên dịch JIT C1 (máy khách), trình biên dịch JIT C2 (máy chủ) và tất cả các trình thu gom rác chính hiện tại, bao gồm ZGC và Shenandoah.

Giống như JDK 18, JDK 19 sẽ là bản phát hành ngắn hạn với sáu tháng hỗ trợ. Bản phát hành trước đó, JDK 17, là bản phát hành LTS với sự hỗ trợ được đảm bảo trong vài năm. Nó được giới thiệu vào ngày 14 tháng 9 năm 2021.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION