Tìm hiểu sâu về HashMap trong Java (Phiên bản JDK 8)

HashMap là một trong những cấu trúc dữ liệu được sử dụng phổ biến nhất trong lập trình Java để quản lý các cặp khóa-giá trị. Kể từ JDK 8, cấu trúc bên trong của HashMap đã trải qua nhiều cải tiến đáng kể, bao gồm việc tích hợp cây Đỏ-Đen (Red-Black Tree) và tối ưu hóa quá trình thay đổi kích thước. Bài viết này sẽ phân tích chi tiết cách HashMa ...

Đăng vào ngày 7 tháng 8 lúc 06:14

Các Bài Toán Thao Tác Với Danh Sách Liên Kết: Trao Đổi Cặp, Xóa Phần Tử Thứ N Từ Cuối Và Tìm Điểm Giao Nhau

Bài viết này khám phá các giải pháp cho một số vấn đề thường gặp khi làm việc với danh sách liên kết, bao gồm việc hoán đổi các cặp nút liền kề, loại bỏ nút thứ N từ cuối danh sách và xác định điểm giao nhau của hai danh sách. Mỗi giải pháp đều được trình bày kèm theo phân tích và mã nguồn minh họa. Hoán Đổi Cặp Nút Trong Danh Sách Liên Kế ...

Đăng vào ngày 22 tháng 7 lúc 04:44

Tổng quan về Cấu trúc Dữ liệu và Thuật toán cơ bản

Phức tạp về Thời gian Phức tạp về thời gian (Time Complexity) là thước đo đánh giá hiệu suất của một thuật toán, cho biết số lượng thao tác cần thiết để thuật toán hoàn thành, thường được biểu diễn dưới dạng ký hiệu O lớn (Big O notation). Vòng lặp giảm một nửa Một số thuật toán có đặc điểm là kích thước dữ liệu hoặc phạm vi tìm kiếm giảm đi m ...

Đăng vào ngày 14 tháng 7 lúc 20:27

Khám phá nội bộ hàng đợi đồng thời ConcurrentQueue trong C# - .NET Core

Cấu trúc lưu trữ Phiên bản .NET Core của ConcurrentQueue sử dụng mô hình phân đoạn (Segment) kết hợp với hàng đợi. Mỗi phân đoạn đóng vai trò như bộ chứa luồng an toàn, có thể hoạt động độc lập. Khác biệt chính so với Framework là kích thước phân đoạn không cố định (từ 32 đến 1,048,576 phần tử) và loại bỏ chỉ mục dài, tạo thành hàng đợi không g ...

Đăng vào ngày 10 tháng 7 lúc 16:51

Tổng quan và Ứng dụng của Mảng Hậu tố (Suffix Array)

Giới thiệu cơ bản Mảng hậu tố (Suffix Array) là một cấu trúc dữ liệu mạnh mẽ trong xử lý chuỗi, cho phép giải quyết hiệu quả nhiều bài toán liên quan đến chuỗi con. Cho một chuỗi S có độ dài n, ta định nghĩa các khái niệm cơ bản sau: Si: Hậu tố bắt đầu tại vị trí i của chuỗi S (tức là chuỗi S[i...n]). sa[i]: Lưu trữ chỉ số bắt đầu c ...

Đăng vào ngày 8 tháng 7 lúc 18:27

Chi Tiết Mã Nguồn HashMap Trong Java

Bản Chất và Đặc Tính Của HashMap HashMap là một trong những cấu trúc dữ liệu phổ biến nhất trong hệ thống Map của Java. Dưới đây là các đặc tính quan trọng của nó: static final int DEFAULT_CAPACITY = 1 > 1; n |= n >>> 2; n |= n >>> 4; n |= n >>> 8; n |= n >>> 16; return (n < 0) ? 1 : (n >= MAX_CAPACITY) ? MAX_CAPACITY : n ...

Đăng vào ngày 26 tháng 6 lúc 12:46

Các cấu trúc dữ liệu cơ bản

Các cấu trúc dữ liệu cơ bản Mục lục- Cấu trúc dữ liệu cơ bản Ngăn xếp (stack) Hàng đợi (queue) Hàng đợi hai đầu (deque) Mảng tuần tự và bộ nhớ Tìm hiểu sơ lược về bộ nhớ Mảng tuần tự Hạn chế của mảng tuần tự: cần biết trước kích thước dữ liệu để cấp phát không gian lưu trữ liên tục, và khi mở rộng phải di chuyển dữ liệu. Danh sách liên kết (Li ...

Đăng vào ngày 17 tháng 6 lúc 16:07

Tạo và quản lý danh sách liên tiếp bằng C

1. Khái niệm về danh sách liên tiếp Danh sách liên tiếp là một cấu trúc dữ liệu cơ bản, sử dụng bộ nhớ liên tục để lưu trữ các phần tử. Nó có thể tự động điều chỉnh kích thước dựa trên số lượng phần tử cần lưu trữ. Bài viết này sẽ hướng dẫn cách triển khai các thao tác như khởi tạo, thêm, xóa, sửa, đọc/ghi file cho danh sách liên tiếp. #pragm ...

Đăng vào ngày 15 tháng 6 lúc 03:43

Hướng Dẫn Chi Tiết Về Map, Set Và Nguyên Lý Bảng Hash Trong Java

Khái Niệm Nền Tảng: Cây Tìm Kiếm Cây tìm kiếm nhị phân (Binary Search Tree - BST) là cấu trúc dữ liệu cơ bản hỗ trợ các thao tác tìm kiếm, chèn và xóa hiệu quả. Một cây BST hợp lệ tuân thủ các quy tắc sau: Nếu con trai bên trái tồn tại, giá trị của nó phải nhỏ hơn nút gốc. Nếu con trai bên phải tồn tại, giá trị của nó phải lớn hơn nút gốc. Cả ...

Đăng vào ngày 16 tháng 5 lúc 06:54