Cách sử dụng cấu trúc dữ liệu Java TreeMap

Cách sử dụng cấu trúc dữ liệu Java TreeMap

Lớp Java TreeMap lưu trữ dữ liệu trong cấu trúc cây bằng giao diện bản đồ. Lớp này mở rộng lớp AbstractMap và giống như lớp cha của nó, TreeMap có hai tham số kiểu. Một trong các tham số kiểu của nó đại diện cho các khóa trong Sơ đồ cây, trong khi tham số còn lại đại diện cho các giá trị.





Cấu trúc dữ liệu TreeMap lưu trữ các cặp khóa-giá trị và cho phép bạn thực hiện các hoạt động CRUD trên dữ liệu này.





Cách tạo Sơ đồ cây trong Java

Lớp TreeMap có bốn hàm tạo mà bạn có thể sử dụng để tạo một đối tượng TreeMap mới. Hàm tạo mặc định là phổ biến nhất trong bốn. Hàm tạo này không có đối số và tạo ra một bản đồ cây trống.





// Create a new tree map 
TreeMap<Integer,String> customers = new TreeMap<Integer,String>();

Đoạn mã trên tạo một bản đồ cây trống được gọi là khách hàng .

Đưa vào cấu trúc dữ liệu sơ đồ cây

Các đặt() phương thức thêm một mục vào một đối tượng TreeMap. Nó có hai đối số — một khóa và giá trị của nó. Bạn có thể thêm các mục vào bản đồ cây theo bất kỳ thứ tự ngẫu nhiên nào và cấu trúc dữ liệu sẽ lưu trữ chúng theo thứ tự tăng dần, theo các khóa của chúng.



// Populate a tree map 
customers.put(105, "Jessica Jones");
customers.put(102, "Mark Williams");
customers.put(104, "Phil Blair");
customers.put(101, "Kim Brown");
customers.put(103, "Jim Riley");

Mã trên thêm năm khách hàng, theo thứ tự ngẫu nhiên, vào sơ đồ cây khách hàng.

Xem các mục trong Sơ đồ cây

Lớp TreeMap lưu trữ dữ liệu của nó trong một đối tượng. Vì vậy, để xem tất cả các mục trong bản đồ dạng cây, bạn có thể chỉ cần in đối tượng bản đồ dạng cây vào bảng điều khiển:





// View all tree map items as an object 
System.out.println(customers);

Đoạn mã trên in kết quả sau ra bảng điều khiển:

{101=Kim Brown, 102=Mark Williams, 103=Jim Riley, 104=Phil Blair, 105=Jessica Jones}

Lưu ý rằng đối tượng trên hiển thị các mục theo thứ tự tăng dần. Bạn cũng có thể xem từng mục và khóa tương ứng của nó bằng cách sử dụng một vòng lặp cho Java .





// View all items with an iterator 
for (Entry<Integer, String> customer : customers.entrySet()) {
System.out.println("Key: " + customer.getKey() + " Value: " + customer.getValue());
}

Đoạn mã trên in kết quả sau ra bảng điều khiển:

Key: 101 Value: Kim Brown 
Key: 102 Value: Mark Williams
Key: 103 Value: Jim Riley
Key: 104 Value: Phil Blair
Key: 105 Value: Jessica Jones

Cập nhật các mục trong Sơ đồ cây

Lớp TreeMap cho phép bạn cập nhật một mục hiện có bằng cách sử dụng thay thế() phương pháp. Có hai phương pháp thay thế. Phương thức đầu tiên lấy một khóa hiện có và giá trị mới mà bạn muốn ánh xạ khóa hiện có.

// Replace existing value 
customers.replace(101,"Kim Smith");
System.out.println(customers);

Đoạn mã trên in đối tượng sau trong bảng điều khiển:

{101=Kim Smith, 102=Mark Williams, 103=Jim Riley, 104=Phil Blair, 105=Jessica Jones}

Bạn có thể thấy Kim Brown Hiện tại là Kim Smith . Phương thức Replace () thứ hai nhận một khóa hiện có, giá trị hiện tại của khóa và giá trị mới mà bạn muốn ánh xạ tới khóa.

// Replace existing value 
customers.replace(103,"Jim Riley", "Michelle Noah");
System.out.println(customers);

Đoạn mã trên in đối tượng sau trong bảng điều khiển:

{101=Kim Brown, 102=Mark Williams, 103=Michelle Noah, 104=Phil Blair, 105=Jessica Jones}

Trong đối tượng trên Michelle Noah thay thế Jim Riley .

Xóa các mục khỏi TreeMap

Nếu bạn muốn xóa một mục duy nhất khỏi bản đồ cây, gỡ bỏ() phương pháp là lựa chọn duy nhất của bạn. Nó lấy khóa được liên kết với mục bạn muốn xóa và trả về giá trị đã xóa.

// Remove an item 
customers.remove(104);
System.out.println(customers);

Chạy đoạn mã trên sẽ in đối tượng sau vào bảng điều khiển:

máy tính của bạn gặp sự cố và cần khởi động lại
{101=Kim Smith, 102=Mark Williams, 103=Michelle Noah, 105=Jessica Jones}

Đây Lớp Java cũng có một xa lạ() phương pháp cho phép bạn xóa tất cả các mục trong bản đồ dạng cây.

TreeMap so với HashMap Java Class

TreeMap và HashMap là hai trong số các lớp bản đồ Java phổ biến hơn. Cả hai đều mở rộng lớp AbstractMap. Mối quan hệ này cho phép các lớp TreeMap và HashMap truy cập vào nhiều chức năng giống nhau.

Tuy nhiên, có một số khác biệt đáng chú ý giữa hai lớp bản đồ này. TreeMap sử dụng triển khai cây Đỏ-đen của giao diện Bản đồ, trong khi HashMap sử dụng bảng băm. HashMap cho phép bạn lưu trữ một khóa rỗng, trong khi TreeMap thì không. Cuối cùng, HashMap nhanh hơn TreeMap. Tốc độ của thuật toán trước là O (1) trong khi tốc độ của thuật toán sau là O (log (n)).