Hướng dẫn hash table vs hash map javascript - bảng băm so với bản đồ băm javascript

Biểu diễn nội bộ của một hashtable && hashmap là,

Hướng dẫn hash table vs hash map javascript - bảng băm so với bản đồ băm javascript

Trong Java, Hashtable và HashMap được phân biệt về mặt hoạt động đồng bộ/không đồng bộ, nếu không, biểu diễn bên trong là như nhau.

Ký hiệu theo nghĩa đen của đối tượng javascript,

var obj = {
           e1: 1,
           e2: 2,
           e3: 3  
         };

có thể được sử dụng trực tiếp như hashtable và hashmap với chức năng băm bên trong của nó. Đối tượng theo nghĩa đen có chuỗi hoặc ký hiệu làm khóa.

ES6 cũng đã giới thiệu window.Map với bất kỳ giá trị nào là khóa.

1) Có phải biểu diễn nội bộ ở trên cho Hashtable và Hashmap, có vẻ chính xác không? (Hoặc) Có sự khác biệt về sự hồi sinh nội bộ của hashtable và hashmap không?

2) Đối tượng JavaScript có theo nghĩa đen O (1) cho Hashtable/Hashmap mà không có sự va chạm nào không?

Hashtables thường được thèm muốn trong tối ưu hóa thuật toán cho thời gian tra cứu O (1) của chúng. Mặc dù JavaScript không có lớp Hashtable bản địa, nhưng nó có các đối tượng gốc và băm (MAP) cung cấp chức năng tương tự khi tổ chức các cặp khóa/giá trị.

Hashtable vs Hashmap:

Hashtables và hashmap là các cấu trúc dữ liệu lưu trữ dữ liệu ở định dạng giống như mảng, sử dụng các cặp khóa/giá trị, trong đó khóa (băm) tương ứng với chỉ mục trong mảng. Một trong những lợi ích chính mà Hashtable có trên hashmap là khả năng gốc để xử lý các bản cập nhật đồng bộ. Điều này có nghĩa là một hashtable có thể được chia sẻ bởi nhiều luồng mà không cần đưa ra các lỗi không đồng bộ.

Hashmaps cung cấp cùng một chức năng khóa/giá trị và xuất hiện trong JavaScript (ES6) dưới dạng đối tượng Bản đồ () (không bị nhầm lẫn với Array.Prototype.map ()). Mặc dù các băm được giới hạn trong mã đơn luồng, chúng có một số lợi ích, ví dụ như trợ cấp của các giá trị null cho phép linh hoạt cao hơn.

Đối tượng JavaScript: Tương tự nhưng khác biệt

Bạn có thể nghĩ, các đối tượng JavaScript đã theo dõi các cặp khóa/giá trị. Mặc dù bạn có thể sử dụng các đối tượng JS để phục vụ cùng một chức năng của Hashmap, nhưng HashMap không mang lại một số lợi ích. Chẳng hạn, Hashmaps cung cấp sự linh hoạt hơn. Khóa trong Hashmap có thể là bất kỳ kiểu dữ liệu nào, điều này bao gồm các mảng và đối tượng. Trong khi đó, các đối tượng chỉ có thể sử dụng số nguyên, chuỗi và ký hiệu làm khóa của chúng.

Hashmap được tổ chức dưới dạng danh sách được liên kết, vì vậy thứ tự của các yếu tố của nó được duy trì, cho phép hashmap có thể sử dụng được. Ngoài ra, không giống như các cặp khóa/giá trị được lưu trữ trong một đối tượng, số lượng mục trong Hashmap có thể được xác định bởi thuộc tính kích thước.

Lưu ý: Một trong những cạm bẫy chính cần biết khi nói đến Hashmaps trong JavaScript, là chúng không thể được dịch trực tiếp sang JSON.

Sử dụng bản đồ đối tượng Hashmap JavaScript ():

Tuyên bố và khởi tạo:

Cách khai báo và khởi tạo một đối tượng hashmap JS mới.

Các phương pháp và thuộc tính hữu ích:

  • Hashmap.size () trả về # của các phần tử trong Hashmap returns the # of elements in the hashmap
  • Hashmap.get () trả về giá trị của phần tử của khóa đã cho returns the value of the element of the given key
  • Hashmap.has () kiểm tra xem Hashmap có chứa khóa được truyền dưới dạng đối số không checks to see if the hashmap contains the key that is passed as an argument
  • Hashmap.set (,) chấp nhận 2 đối số và tạo một yếu tố mới cho Hashmap accepts 2 arguments and creates a new element to the hashmap
  • Hashmap.delete () Xóa cặp khóa/giá trị phù hợp với khóa được truyền dưới dạng đối số deletes the key/value pair that matches the key that is passed in as an argument
  • Hashmap.clear () xóa tất cả các yếu tố từ Hashmap clears all elements from the hashmap
Phương thức .size () cho các đối tượng hashmap js tương tự như mảng.length () và trả về số lượng các phần tử trong HashMap.

Hashmap là một cách tuyệt vời để quản lý các cặp khóa/giá trị và sẽ hoạt động trong hầu hết các trường hợp cho các ứng dụng JS. Chỉ cần lưu ý rằng có những trường hợp - đặc biệt nếu bạn đang tích hợp các cặp khóa/giá trị của mình với JSON - nơi bạn có thể muốn dựa vào các đối tượng JavaScript tiêu chuẩn.

Sources:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

https://sunfishempire.wordpress.com/2014/08/19/5-ways-to-use-a-javascript-hashmap/

https://adrianmejia.com/data-structures-time-complexity-for-beginners-arrays-hashmaps-linked-lists-stacks-queues-tutorial/

https://www.geeksforgeeks.org/map-vs-object-in-javascript/

Cấu trúc nhà/blog/dữ liệu 101: Triển khai các bảng băm trong JavaScript/Blog/Data Structures 101: implement hash tables in JavaScript

Ngày 08 tháng 9 năm 2020 - 11 phút Đọc11 min read

Hướng dẫn hash table vs hash map javascript - bảng băm so với bản đồ băm javascript

Jerry Ejonavi


Bảng băm là gì?

Bảng băm (thường được gọi là bản đồ băm) là cấu trúc dữ liệu ánh xạ các phím thành các giá trị. Bảng băm kết hợp tra cứu, chèn và xóa các hoạt động một cách hiệu quả. Chìa khóa được gửi đến hàm băm thực hiện các hoạt động số học trên đó. Kết quả (được gọi là giá trị băm hoặc băm) là một chỉ số của cặp giá trị khóa.hash table (often called a hash map) is a data structure that maps keys to values. Hash tables combine lookup, insert, and delete operations in an efficient way. The key is sent to a hash function that performs arithmetic operations on it. The result (called the hash value or hash) is an index of the key-value pair.

Hãy nghĩ về điều này giống như một chữ ký trên một khối dữ liệu cho phép chúng ta tìm kiếm trong thời gian không đổi. Bảng băm hoạt động giống như một từ điển mà chúng ta có thể ánh xạ để lấy từ băm sang dữ liệu mong muốn.

Cấu trúc dữ liệu này được sử dụng rộng rãi trong nhiều loại phần mềm máy tính, đặc biệt là cho các mảng kết hợp, lập chỉ mục cơ sở dữ liệu, bộ nhớ cache và bộ. Thông thường, thao tác này trả về cùng một băm cho một khóa nhất định.

Hiệu suất của bảng băm phụ thuộc vào ba yếu tố cơ bản: hàm băm, kích thước của bảng băm và phương pháp xử lý va chạm.

Bảng băm được tạo thành từ hai phần:

  • Đối tượng: Một đối tượng với bảng nơi lưu trữ dữ liệu. Mảng chứa tất cả các mục nhập khóa trong bảng. Kích thước của mảng phải được đặt theo lượng dữ liệu dự kiến.
  • Hàm băm (hoặc chức năng ánh xạ): Hàm này xác định chỉ số của cặp giá trị khóa của chúng tôi. Nó phải là một hàm một chiều và tạo ra một hàm băm khác nhau cho mỗi khóa.

Lưu ý: Trong JavaScript, các bảng Hash thường được triển khai bằng các mảng vì chúng cung cấp quyền truy cập vào các phần tử trong thời gian không đổi. In JavaScript, hash tables are generally implemented using arrays as they provide access to elements in constant time.


Việc sử dụng bảng băm

Các bảng Hash cung cấp quyền truy cập vào các yếu tố trong thời gian không đổi, vì vậy chúng rất được khuyến khích cho các thuật toán ưu tiên các hoạt động truy xuất dữ liệu và tìm kiếm. Băm là lý tưởng cho một lượng lớn dữ liệu, vì chúng mất một khoảng thời gian liên tục để thực hiện chèn, xóa và tìm kiếm.

Về độ phức tạp về thời gian, hoạt động là 0 (1) 0 (1). Trung bình, tra cứu bảng băm hiệu quả hơn các cấu trúc dữ liệu tra cứu bảng khác. Một số cách sử dụng phổ biến của các bảng băm là:0(1)0(1). On average, a hash table lookup is more efficient than other table lookup data structures. Some common uses of hash tables are:

  • Lập chỉ mục cơ sở dữ liệu
  • Bộ nhớ cache
  • Biểu diễn dữ liệu duy nhất
  • Tra cứu trong một mảng chưa được phân loại
  • Tra cứu trong mảng được sắp xếp bằng tìm kiếm nhị phân

Bàn băm so với cây

Băm và cây thực hiện các công việc tương tự, nhưng các yếu tố khác nhau trong chương trình của bạn xác định khi nào nên sử dụng cái này hơn cái kia.

Cây hữu ích hơn khi một ứng dụng cần đặt hàng dữ liệu theo một chuỗi cụ thể. Các bảng Hash là lựa chọn thông minh hơn cho dữ liệu được sắp xếp ngẫu nhiên do tổ chức cặp giá trị khóa của nó.

Các bảng băm có thể thực hiện trong thời gian không đổi, trong khi cây thường hoạt động trong O (logn) O (log n). Trong trường hợp xấu nhất, hiệu suất của các bảng băm có thể thấp như o (n) o (n). Tuy nhiên, một cây AVL sẽ duy trì o (logn) o (log n) trong trường hợp xấu nhất.O(logn)O(log n). In the worst-case scenario, the performance of hash tables can be as low as O(n)O(n). An AVL tree, however, would maintain O(logn)O(log n) in the worst case.

Một bảng băm hiệu quả yêu cầu hàm băm để phân phối các khóa. Một cây đơn giản hơn, vì nó chỉ truy cập thêm không gian khi cần và không yêu cầu hàm băm.

Hướng dẫn hash table vs hash map javascript - bảng băm so với bản đồ băm javascript


Hàm băm là gì?

Hàm băm là một phương thức hoặc hàm lấy khóa vật phẩm làm đầu vào, gán một chỉ mục cụ thể cho khóa đó và trả về chỉ mục bất cứ khi nào khóa được tra cứu. Hoạt động này thường trả về cùng một băm cho một khóa nhất định. Một hàm băm tốt phải hiệu quả để tính toán và phân phối đồng đều.hash function is a method or function that takes an item’s key as an input, assigns a specific index to that key and returns the index whenever the key is looked up. This operation usually returns the same hash for a given key. A good hash function should be efficient to compute and uniformly distribute keys.

Các hàm băm giúp giới hạn phạm vi của các khóa vào ranh giới của mảng, vì vậy chúng tôi cần một hàm chuyển đổi một phím lớn thành một khóa nhỏ hơn. Đây là công việc của hàm băm.


Chức năng băm chung

Có nhiều loại hàm băm có cách sử dụng khác nhau. Hãy cùng xem một số hàm băm phổ biến nhất được sử dụng trong lập trình hiện đại.

Mô -đun số học: Trong phương pháp này, chúng tôi lấy mô -đun của khóa với kích thước danh sách/mảng:

(firstHash(key) + i * secondHash(key)) % tableSize 
0. Vì vậy,
(firstHash(key) + i * secondHash(key)) % tableSize 
1 sẽ luôn ở giữa
(firstHash(key) + i * secondHash(key)) % tableSize 
2 và
(firstHash(key) + i * secondHash(key)) % tableSize 
3.
In this approach, we take the modular of the key with the list/array size:
(firstHash(key) + i * secondHash(key)) % tableSize 
0. So, the
(firstHash(key) + i * secondHash(key)) % tableSize 
1 will always stay between
(firstHash(key) + i * secondHash(key)) % tableSize 
2 and
(firstHash(key) + i * secondHash(key)) % tableSize 
3.

Cắt ngắn: Ở đây, chúng tôi chọn một phần của khóa làm chỉ mục chứ không phải toàn bộ khóa. Chúng ta có thể sử dụng chức năng mod cho thao tác này, mặc dù nó không cần phải dựa trên kích thước mảng Here, we select a part of the key as the index rather than the whole key. We can use a mod function for this operation, although it does not need to be based on the array size

Gấp: Cách tiếp cận này liên quan đến việc chia chìa khóa thành các khối nhỏ và áp dụng một chiến lược số học khác nhau ở mỗi khối. This approach involves dividing the key into small chunks and applying a different arithmetic strategy at each chunk.


Va chạm bàn băm

Đôi khi, một hàm băm có thể tạo cùng một chỉ mục cho nhiều hơn một khóa. Kịch bản này được gọi là va chạm băm. Va chạm là một vấn đề vì mọi vị trí trong bảng băm được cho là lưu trữ một phần tử duy nhất.hash collision. Collisions are a problem because every slot in a hash table is supposed to store a single element.

Va chạm băm thường được xử lý bằng bốn chiến lược phổ biến.

  1. Thăm dò tuyến tính: Thăm dò tuyến tính hoạt động bằng cách bỏ qua một chỉ mục đã được điền. Nó có thể đạt được bằng cách thêm giá trị bù vào một chỉ mục đã được tính toán. Nếu chỉ số đó cũng được điền, hãy thêm nó một lần nữa và như vậy. Linear probing works by skipping over an index that is already filled. It could be achieved by adding an offset value to an already computed index. If that index is also filled, add it again and so on.

    Một nhược điểm của việc sử dụng chiến lược này là nếu bạn không chọn một sự bù đắp một cách khôn ngoan, bạn có thể quay trở lại nơi bạn bắt đầu và bỏ lỡ rất nhiều vị trí có thể trong mảng.

  1. Chuỗi: Trong chiến lược chuỗi, mỗi khe của bảng băm của chúng tôi chứa một con trỏ đến cấu trúc dữ liệu khác như danh sách được liên kết hoặc cây. Mỗi mục tại chỉ mục đó sẽ được chèn vào danh sách được liên kết cho chỉ mục đó. In the chaining strategy, each slot of our hash table holds a pointer to another data structure such as a linked list or a tree. Every entry at that index will be inserted into the linked list for that index.

    Như bạn có thể thấy, chuỗi cho phép chúng tôi băm nhiều cặp giá trị khóa ở cùng một chỉ số trong thời gian không đổi (chèn ở đầu cho các danh sách được liên kết). Chiến lược này làm tăng đáng kể hiệu suất, nhưng nó tốn kém về mặt không gian.

  1. Thay đổi kích thước mảng hoặc danh sách: Một cách khác để giảm va chạm là thay đổi kích thước danh sách hoặc mảng. Chúng ta có thể đặt một ngưỡng và một khi nó được vượt qua, chúng ta có thể tạo một bảng mới gấp đôi kích thước của bản gốc. Tất cả những gì chúng ta phải làm sau đó là sao chép các yếu tố từ bảng trước đó. Another way to reduce collisions is to resize the list or array. We can set a threshold and once it is crossed, we can create a new table which is double the size of the original. All we have to do then is to copy the elements from the previous table.

    Thay đổi kích thước danh sách hoặc mảng làm giảm đáng kể các va chạm, nhưng chính chức năng này rất tốn kém. Do đó, chúng ta cần cẩn thận về ngưỡng chúng ta đặt. Một quy ước điển hình là đặt ngưỡng ở mức 0,6, điều đó có nghĩa là khi 60% bảng được lấp đầy, hoạt động thay đổi kích thước cần diễn ra.

  2. Double Hang: Trong đôi băm, có hai hàm băm. Hàm băm thứ hai được sử dụng để cung cấp giá trị bù trong trường hợp hàm đầu tiên gây ra va chạm. Double Washing có thể tìm thấy khe miễn phí tiếp theo nhanh hơn phương pháp thăm dò tuyến tính. Điều này rất hữu ích cho các ứng dụng có bảng băm nhỏ hơn. In double hashing, there are two hash functions. The second hash function is used to provide an offset value in case the first function causes a collision. Double hashing can find the next free slot faster than a linear probing approach. This is useful for applications with a smaller hash table.

    Chức năng sau đây là một ví dụ về băm đôi:

(firstHash(key) + i * secondHash(key)) % tableSize 

Cấu trúc dữ liệu chính để phỏng vấn mã hóa.

Tìm hiểu các cấu trúc dữ liệu và thuật toán trong JavaScript mà không cần thông qua các video hoặc tài liệu. Các khóa học dựa trên văn bản giáo dục rất dễ lướt web và có môi trường mã hóa trực tiếp, làm cho việc học nhanh chóng và hiệu quả.

Cấu trúc dữ liệu cho các cuộc phỏng vấn mã hóa trong JavaScript



Cách thực hiện bảng băm

Để thực hiện bảng băm bằng JavaScript, chúng tôi sẽ thực hiện ba điều: Tạo lớp bảng băm, thêm hàm băm và thực hiện một phương thức để thêm các cặp khóa/giá trị vào bảng của chúng tôi.

Đầu tiên, hãy để Lôi tạo lớp

(firstHash(key) + i * secondHash(key)) % tableSize 
4.

class HashTable {

constructor() {

this.values = {};

this.length = 0;

this.size = 0;

}

}

Hàm tạo chứa một đối tượng trong đó chúng tôi sẽ lưu trữ các giá trị, độ dài của các giá trị và toàn bộ kích thước của bảng băm: có nghĩa là có bao nhiêu nhóm bảng băm chứa. Chúng tôi sẽ lưu trữ dữ liệu của chúng tôi trong các thùng này.

Tiếp theo, chúng ta phải thực hiện một chức năng băm đơn giản.

calculateHash(key) {

return key.toString().length % this.size;

}

Hàm này lấy phím được cung cấp và trả về một hàm băm mà tính toán bằng cách sử dụng mô đun số học.

Cuối cùng, chúng ta cần một phương thức để chèn các cặp khóa/giá trị. Hãy xem mã và xem điều này trong hành động:

add(key, value) {

const hash = this.calculateHash(key);

if (!this.values.hasOwnProperty(hash)) {

this.values[hash] = {};

}

if (!this.values[hash].hasOwnProperty(key)) {

this.length++;

}

this.values[hash][key] = value;

}

Điều đầu tiên chúng tôi làm ở đây là tính toán băm cho khóa của chúng tôi. Nếu băm chưa tồn tại, chúng tôi lưu nó vào cửa hàng đối tượng của chúng tôi. Kiểm tra tiếp theo mà chúng tôi thực hiện là trên băm. Nếu nó không có khóa được lưu, chúng tôi sẽ lưu khóa và giá trị và tăng kích thước của bảng băm của chúng tôi.

Tìm kiếm trong bảng băm đi rất nhanh. Không giống như với một mảng nơi chúng ta phải đi qua tất cả các yếu tố cho đến khi chúng ta đạt được mục chúng ta cần, với một bảng băm, chúng ta chỉ cần lấy chỉ mục. Tôi sẽ thêm mã hoàn chỉnh cho việc triển khai bảng băm của chúng tôi dưới đây.

class HashTable {

constructor() {

this.values = {};

this.length = 0;

this.size = 0;

}

calculateHash(key) {

return key.toString().length % this.size;

}

add(key, value) {

const hash = this.calculateHash(key);

If (!this.values.hasOwnProperty(hash)) {

this.values[hash] = {};

}

if (!this.values[hash].hasOwnProperty(key)) {

this.length++;

}

this.values[hash][key] = value;

}

search(key) {

const hash = this.calculateHash(key);

if (this.values.hasOwnProperty(hash) && this.values[hash].hasOwnProperty(key)) {

return this.values[hash][key];

} else {

return null;

}

}

}

//create object of type hash table

const ht = new HashTable();

//add data to the hash table ht

ht.add("Canada", "300");

ht.add("Germany", "100");

ht.add("Italy", "50");

//search

console.log(ht.search("Italy"));

Hoàn thành việc thực hiện bảng băm JavaScript cơ bản của chúng tôi. Lưu ý rằng chúng tôi đã sử dụng

(firstHash(key) + i * secondHash(key)) % tableSize 
5 để thể hiện bảng băm của chúng tôi. Các đối tượng trong JavaScript thực sự được thực hiện bằng cách sử dụng các bảng băm! Nhiều ngôn ngữ lập trình cũng cung cấp hỗ trợ cho các bảng băm dưới dạng các mảng liên kết tích hợp hoặc làm mô-đun thư viện tiêu chuẩn.


Thực hiện với chuỗi xô

Bây giờ, hãy để Lừa xem một triển khai khác bằng cách sử dụng chuỗi nhóm. Chiến lược chuỗi cùng với hoạt động thay đổi kích thước để tránh va chạm trong bảng.bucket chaining. The chaining strategy along with the resize operation to avoid collisions in the table.

Tất cả các phần tử có cùng khóa băm sẽ được lưu trữ trong một mảng ở chỉ mục đó. Trong cấu trúc dữ liệu, các mảng này được gọi là xô. Kích thước của bảng băm được đặt là n ∗ mn*m trong đó n n là số lượng các phím nó có thể giữ và mm là số lượng khe mà mỗi thùng chứa.n∗mn*m where n n is the number of keys it can hold, and mm is the number of slots each bucket contains.

Chúng tôi sẽ bắt đầu bằng cách xây dựng một lớp

(firstHash(key) + i * secondHash(key)) % tableSize 
6 đơn giản. Như đã thảo luận trước đó, một mục băm điển hình bao gồm ba thành viên dữ liệu: khóa, giá trị và tham chiếu đến một mục mới.

class HashEntry{

constructor(key, data){

this.key = key;

// data to be stored

this.value = data;

// reference to new entry

this.next = null;

}

}

let entry = new HashEntry(3, "Educative");

console.log (String(entry.key) + ", " + entry.value);

Bây giờ, chúng tôi sẽ tạo ra lớp

(firstHash(key) + i * secondHash(key)) % tableSize 
4 là tập hợp các đối tượng
(firstHash(key) + i * secondHash(key)) % tableSize 
6. Chúng tôi sẽ theo dõi số lượng vị trí trong bảng và kích thước hiện tại của bảng băm. Các biến này sẽ có ích khi chúng ta cần thay đổi kích thước bảng.

class HashTable{

//Constructor

constructor(){

//Size of the HashTable

this.slots = 10;

//Current entries in the table

//Used while resizing the table when half of the table gets filled

this.size = 0;

//Array of HashEntry objects (by deafult all None)

this.bucket = [];

for (var i=0; i

this.bucket[i]=null;

}

}

//Helper Functions

get_size(){

return this.size;

}

isEmpty(){

return this.get_size() == 0;

}

}

let ht = new HashTable();

console.log(ht.isEmpty());

Điều cuối cùng chúng ta cần là một hàm băm. Chúng tôi đã thử một số cách tiếp cận khác nhau trong các bài học trước. Đối với việc triển khai của chúng tôi, chúng tôi sẽ chỉ cần lấy mô -đun của khóa với tổng kích thước của bảng băm (khe).

//Hash Function

getIndex(key){

let index = key % this.slots;

return index;

}

Chúng tôi đi! Các bước tiếp theo sẽ là thực hiện các hoạt động tìm kiếm, chèn và xóa từng cái một.



Kết thúc câu hỏi và phỏng vấn câu hỏi

Xin chúc mừng bạn đã đến cuối bài viết này! Tôi hy vọng đây là một điểm khởi đầu tốt khi bạn tiếp tục hành trình tìm hiểu thêm về các bảng băm và cấu trúc dữ liệu nói chung.

Điều tiếp theo cần học là các câu hỏi phỏng vấn phổ biến cho các bảng băm, vì vậy bạn có thể thấy cách thực hiện các hoạt động và ánh xạ bảng băm. Một số trong số này bao gồm:

  • Thực hiện chèn, xóa và tìm kiếm
  • Kiểm tra xem các mảng có được rời bỏ không
  • Tìm cặp đối xứng trong một mảng
  • Tìm hai cặp sao cho a+b = c+da+b = c+da+b =c+da+b = c+d
  • Tìm hai số cộng với giá trị ”
  • Xóa các bản sao khỏi danh sách được liên kết bằng cách sử dụng bảng băm
  • Cách chèn giá trị mới vào khóa băm đã bị chiếm
  • và nhiều hơn nữa

Nếu bạn đã sẵn sàng để chuyển sang các vấn đề trong thế giới thực, hãy xem các cấu trúc dữ liệu khóa học để phỏng vấn mã hóa trong JavaScript. Nó chứa một đánh giá chi tiết về tất cả các cấu trúc dữ liệu phổ biến và cung cấp chi tiết cấp độ triển khai trong JavaScript để giúp bạn được trang bị tốt với tất cả các cấu trúc dữ liệu khác nhau.Data Structures for Coding Interviews in JavaScript. It contains a detailed review of all the common data structures and provides implementation level details in JavaScript to help you become well equipped with all the different data structures.

Cuối cùng, bạn sẽ có tất cả các thực hành thực hành mà bạn cần để đánh giá cuộc phỏng vấn mã hóa tiếp theo của bạn.

Học hỏi!


Tiếp tục đọc về JavaScript

  • Tăng lên các kỹ năng JavaScript của bạn với 10 thử thách mã hóa
  • 15 Mẹo JavaScript: Thực tiễn tốt nhất để đơn giản hóa mã của bạn
  • ACE Các mẫu thiết kế JavaScript hàng đầu cho các cuộc phỏng vấn mã hóa

Hướng dẫn hash table vs hash map javascript - bảng băm so với bản đồ băm javascript

Viết bởiJerry EjonaviJerry Ejonavi

Tham gia một cộng đồng gồm hơn 1,4 triệu độc giả. Một email miễn phí, hai tháng một lần với một loạt các bài viết hàng đầu của giáo dục và các mẹo mã hóa.

Sự khác biệt giữa bảng băm và bản đồ băm là gì?

Hashmap vs Hashtable Nó an toàn cho luồng và có thể được chia sẻ với nhiều luồng. Hashmap cho phép một phím null và nhiều giá trị null trong khi Hashtable không cho phép bất kỳ khóa hoặc giá trị null nào. Hashmap thường được ưa thích hơn Hashtable nếu không cần đồng bộ hóa luồng.HashMap allows one null key and multiple null values whereas Hashtable doesn't allow any null key or value. HashMap is generally preferred over HashTable if thread synchronization is not needed.

Bản đồ JavaScript có phải là bảng băm không?

Cả hai đối tượng và bản đồ đều là các bảng băm trong JavaScript. Các bảng Hash thực hiện cấu trúc dữ liệu bản đồ và đối tượng. Bài viết này sẽ nói thêm về các bảng băm trong JavaScript. Các bảng Hash thực hiện các mảng kết hợp, một hệ thống ánh xạ các khóa thành các giá trị.. Hash tables implement the map and objects data structure. This article will talk more about hash tables in JavaScript. Hash tables implement associative arrays, a system that maps keys into values.

Bảng băm JavaScript là gì?

Các bảng Hash là một cấu trúc dữ liệu cho phép bạn tạo một danh sách các giá trị được ghép nối.Sau đó, bạn có thể truy xuất một giá trị nhất định bằng cách sử dụng khóa cho giá trị đó mà bạn đặt vào bảng trước.a data structure that allow you to create a list of paired values. You can then retrieve a certain value by using the key for that value, which you put into the table beforehand.

Hashmap hoặc hashtable là nhanh hơn?

Hashmap không được đồng bộ hóa, do đó nó nhanh hơn và sử dụng ít bộ nhớ hơn Hashtable.Nói chung, các đối tượng không đồng bộ hóa nhanh hơn các đối tượng được đồng bộ hóa trong một ứng dụng ren duy nhất. and uses less memory than Hashtable. Generally, unsynchronized objects are faster than synchronized ones in a single threaded application.