CÁCH SỬ DỤNG HASHMAP TRONG JAVA

2 Sơ đồ gia dụng lắp thêm bậc của HashMap3 Sử dụng HashMap cơ bản5 Một số method bổ sung mang đến HashMap trong Java 8

HashMap là 1 trong những implement của Map interface vào java.

Bạn đang xem: Cách sử dụng hashmap trong java

Mỗi bộ phận trong HashMap là 1 cặp quý giá key-value, nghĩa là cùng với từng key bọn họ sẽ đưa ra một value nhất. Do đó việc đào bới tìm kiếm kiếm trong HashMap đã trải qua cực hiếm key để đưa quý giá tương xứng.

Các chúng ta cũng có thể đặt thắc mắc rằng `Tại sao không giữ các quý giá vào List cơ mà cần nên mang đến HashMap?`, lý do dễ dàng là hiệu xuất search kiếm. Nếu chúng ta muốn search kiếm 1 phần tử trong List, thì time complexity là O(n), ví như List được thu xếp thì sẽ là O(log n) cùng với binary tìm kiếm. Ưu điểm của HashMap là độ phức hợp về thời gian nhằm insert cùng kiếm tìm kiếm một quý hiếm mức độ vừa phải là O(1).

HashMap giống như như HashTable tuy nhiên nó không được đồng nhất hóa. Nó cũng cho phép lưu trữ key có mức giá trị NULL, nhưng hãy lưu ý vào một HashMap chỉ được cất một key độc nhất vô nhị của giá trị NULL. Còn các value thì rất có thể NULL tùy ý. Các thành phần vào HashMap không được đảm sản phẩm công nghệ tự

Constructor HashMap

Để khởi sinh sản HashMap chúng ta có 4 constructor sau:

HashMap(): Default constructor cùng với mức độ cất lúc đầu là 16.HashMap(int initialCapacity): Khởi tạo thành HashMap cùng với mức độ đựng ban sơ initialCapacity.HashMap(int initial capacity, float loadFactor): Khởi tạo thành HashMap với sức cất lúc đầu initialCapacity với loadFactor.HashMap(Map map): Khởi tạo thành HashMap copy các bộ phận tự Map(HaspMap, HashTable những implement của Map interface) truyền vào.

import java.util.HashMap; public class GFG public static void main(String<> args) // Create an empty hash maps HashMap bản đồ = new HashMap(); // Add elements khổng lồ the map bản đồ.put("vishal", 10); maps.put("sachin", 30); map.put("vaibhav", 20); // Print kích cỡ và content System.out.println("Size of maps is:- " + map.size()); System.out.println(map); // Check if a key is present và if // present, print value if (map.containsKey("vishal")) Integer a = bản đồ.get("vishal"); System.out.println("value for key" + " "vishal" is:- " + a); Output:Size of map is:- 3vaibhav=trăng tròn, vishal=10, sachin=30value for key "vishal" is:- 10

Sơ vật dụng vật dụng bậc của HashMap

*
*

Knhị kháo

public class HashMap extends AbstractMap implements Map, Cloneable, SerializableType Parameters:

K – Kiểu dữ liệu của KEYV – Kiểu tài liệu của Value

HashMap implement những interface Serializable, Cloneable, Map . HashMap extends AbstractMap . Các sub-class của chính nó hoàn toàn có thể kể đến nhỏng LinkedHashMap, PrinterStateReasons.

Xem thêm: Hãy Cho Biết Vị Trí Của Việt Nam Ở Đâu Trên Bản Đồ Thế Giới ?

Sử dụng HashMap cơ bản

Trước hết nhằm áp dụng HashMap chúng ta sẽ tạo nên ra một Product class dùng làm cho hình trạng dữ liệu mang đến Value vào HashMap

public class Product private String name; private String description; private List tags; // standard getters/setters/constructors public Product addTagsOfOtherProdcut(Product product) this.tags.addAll(hàng hóa.getTags()); return this;

Thêm bộ phận trong HashMap

Để thêm 1 phần tử vào HashMap, chúng ta có thể sử dụng phương thơm thức put(). Tuy nhiên các bạn để ý rằng vật dụng từ cung ứng không được lưu lại trong Hashmap. Nội bộ bên phía trong HashMap, mỗi thành phần sẽ có được một mã băm riêng biệt, HashMap lập chỉ mục cho các phần tử nhờ vào mã băm này, về cơ bản mã băm này rất nặng nề trùng có thể chấp nhận được bài toán lập chỉ mục tác dụng hơn.

Bây giờ bạn cũng có thể sản xuất HashMap cùng với Key là String cùng Value là Product.

Map productsByName = new HashMap();Và thêm thành phầm vào HashMap của bọn chúng tôi:

Product eBike = new Product("E-Bike", "A xe đạp with a battery");Product roadBike = new Product("Road bike", "A xe đạp for competition");productsByName.put(eBike.getName(), eBike);productsByName.put(roadBike.getName(), roadBike);

Cập nhật bộ phận vào HashMap

Sau Khi thêm những bộ phận nếu còn muốn cập nhật lại, thì chúng ta có thể áp dụng lại cách thức put (). Vì các phần tử trong bạn dạng đồ vật được lập chỉ mục bằng phương pháp áp dụng các key, buộc phải cực hiếm của khóa rất có thể được đổi khác bằng phương pháp chỉ cần ckém value mang đến key tương ứng nhưng chúng ta ước ao update.

Product eBike = new Product("E-Bike", "A bike with a battery");productsByName.put("1", eBike);// Cập nhật roadBike mang lại key = "1"Product roadBike = new Product("Road bike", "A bike for competition");productsByName.put("1", roadBike );

Xóa phần tử vào HashMap

Để xóa một phần tử ngoài HashMap, bạn cũng có thể sử dụng phương thức remove sầu (). Pmùi hương thức này nhấn giá trị key với xóa bộ phận trong HashMap có mức giá trị key tương xứng cùng với key được truyền vào.

productsByName.remove("E-Bike");assertNull(productsByName.get("E-Bike"));

Truy xuất thành phần vào HashMap

Chúng ta có thể đem một value phụ thuộc key được cung cấp trải qua get() method

productsByName.remove("E-Bike");assertNull(productsByName.get("E-Bike"));Product nextPurchase = productsByName.get("E-Bike");assertEquals("A bike with a battery", nextPurchase.getDescription());Nếu bọn họ nỗ lực tìm kiếm quý giá cho một key ko trường tồn vào HashMap, get() đã trả về NULL.

Product nextPurchase = productsByName.get("Car");assertNull(nextPurchase);

Key có mức giá trị null trong HashMap

Nlỗi đã nhắc làm việc bên trên thì HashMap có thể lưu trữ một key có mức giá trị NULL

roduct defaultProduct = new Product("Chocolate", "At least buy chocolate");productsByName.put(null, defaultProduct);Product nextPurchase = productsByName.get(null);assertEquals("At least buy chocolate", nextPurchase.getDescription());

Kiểm tra key hoặc value trường thọ trong HashMap

Để kiểm tra xem một key gồm xuất hiện trong HashMap hay là không, bạn cũng có thể sử dụng cách thức containsKey ():

productsByName.containsKey("E-Bike");Hoặc, để khám nghiệm coi một value gồm trong HashMap hay là không, bạn cũng có thể áp dụng thủ tục containsValue ():

productsByName.containsValue(eBike);Cả nhị lời điện thoại tư vấn phương thức sẽ trả về true trong ví dụ của họ. Mặc mặc dù chúng trông cực kỳ giống nhau, có một sự khác biệt quan trọng đặc biệt về công suất thân nhị phương pháp này là. Độ phức tạp để chất vấn xem một key có lâu dài hay là không là O (1), trong lúc độ phức hợp để kiểm tra một value là O (n), do rất cần được coi xét qua tất cả những phần tử vào HashMap.

Duyệt HashMap

Có tía biện pháp cơ bản nhằm tái diễn tất cả những cặp key-value vào HashMap. Chúng tôi hoàn toàn có thể tái diễn tập đúng theo toàn bộ các khóa:

for(String key : productsByName.keySet()) Product product = productsByName.get(key);Hoặc bạn cũng có thể lặp lại tập hòa hợp toàn bộ những mục:

for(Map.Entry entry : productsByName.entrySet()) Product sản phẩm = entry.getValue(); String key = entry.getKey(); //vày something with the key và valueCuối thuộc, chúng ta có thể lặp lại bên trên toàn bộ các value của HashMap:

List products = new ArrayList(productsByName.values());

Hiểu rõ Key vào HashMap

Chúng ta rất có thể thực hiện một class vì thiết yếu bọn họ từ bỏ quan niệm để gia công loại tài liệu cho key của HashMap. Tuy nhiên, nhằm HashMap vận động bình thường, họ buộc phải override các method equals () cùng hashCode (). Nếu không, đông đảo Product Object đầy đủ được xem là một key không giống nhau cho dù giá trị của những thuộc tính sử dụng có tác dụng key cân nhau.

class Product { private String name; private String description; private List tags; // ... constructor,setter, getter