Java中HashMap和HashSet的高效使用技巧分享
Java HashMap
HashMap
是一種哈希表,它存儲鍵值對。鍵用于查找值,就像數(shù)組中的索引一樣。HashMap
的優(yōu)勢在于它可以使用任何類型作為鍵,并且查找速度很快。
創(chuàng)建 HashMap
// 導(dǎo)入 HashMap 類 import java.util.HashMap; public class Main { public static void main(String[] args) { // 創(chuàng)建一個名為 capitalCities 的 HashMap 對象,將存儲 String 鍵和 String 值 HashMap<String, String> capitalCities = new HashMap<>(); } }
添加項目
// 添加鍵和值(國家,城市) capitalCities.put("England", "London"); capitalCities.put("Germany", "Berlin"); capitalCities.put("Norway", "Oslo"); capitalCities.put("USA", "Washington DC");
訪問項目
// 獲取 England 的首都 String capitalOfEngland = capitalCities.get("England");
刪除項目
// 刪除 England 的首都 capitalCities.remove("England");
HashMap 大小
// 獲取 HashMap 中的項目數(shù)量 int size = capitalCities.size();
循環(huán)遍歷 HashMap
// 遍歷 HashMap 并打印鍵和值 for (String key : capitalCities.keySet()) { String value = capitalCities.get(key); System.out.println("Key: " + key + ", Value: " + value); }
使用其他類型
HashMap
可以存儲任何類型的鍵和值。例如,您可以存儲 Integer
鍵和 String
值:
// 創(chuàng)建一個名為 people 的 HashMap 對象,將存儲 Integer 鍵和 String 值 HashMap<Integer, String> people = new HashMap<>(); // 添加鍵和值(ID,姓名) people.put(1, "John Doe"); people.put(2, "Jane Doe"); // 獲取 ID 為 1 的姓名 String name = people.get(1);
HashMap
是一種強大的數(shù)據(jù)結(jié)構(gòu),可用于存儲各種類型的數(shù)據(jù)。它具有快速查找速度和靈活的鍵值對存儲機制,使其成為許多應(yīng)用程序的理想選擇。
HashMap 的優(yōu)勢:
- 快速查找速度
- 可以存儲任何類型的鍵和值
- 靈活的鍵值對存儲機制
HashMap 的劣勢:
- 不是線程安全的
- 可能會出現(xiàn)哈希碰撞
建議:
- 如果需要快速查找數(shù)據(jù),請使用
HashMap
。 - 如果需要線程安全的數(shù)據(jù)結(jié)構(gòu),請使用
ConcurrentHashMap
。 - 如果需要避免哈希碰撞,請使用
LinkedHashMap
。
Java HashSet
HashSet
是一個無序集合,其中每個元素都是唯一的。它基于哈希表實現(xiàn),因此查找速度很快。
創(chuàng)建 HashSet
// 導(dǎo)入 HashSet 類 import java.util.HashSet; public class Main { public static void main(String[] args) { // 創(chuàng)建一個名為 cars 的 HashSet 對象,將存儲字符串 HashSet<String> cars = new HashSet<>(); } }
添加項目
// 添加項目 cars.add("Volvo"); cars.add("BMW"); cars.add("Ford"); cars.add("BMW"); // 不會重復(fù)添加 cars.add("Mazda"); // 查看 HashSet System.out.println(cars);
檢查項目是否存在
// 檢查項目是否存在 boolean isPresent = cars.contains("Mazda"); // 輸出結(jié)果 System.out.println("Mazda 在 HashSet 中嗎? " + isPresent);
刪除項目
// 刪除項目 cars.remove("Volvo"); // 查看 HashSet System.out.println(cars);
HashSet 大小
// 獲取 HashSet 大小 int size = cars.size(); // 輸出結(jié)果 System.out.println("HashSet 大?。? + size);
循環(huán)遍歷 HashSet
// 循環(huán)遍歷 HashSet for (String car : cars) { System.out.println(car); }
使用其他類型
HashSet
可以存儲任何類型的元素。例如,您可以存儲 Integer
元素:
// 創(chuàng)建一個名為 numbers 的 HashSet 對象,將存儲整數(shù) HashSet<Integer> numbers = new HashSet<>(); // 添加元素 numbers.add(1); numbers.add(2); numbers.add(3); // 循環(huán)遍歷 HashSet for (int number : numbers) { System.out.println(number); }
HashSet
是一種非常有用的數(shù)據(jù)結(jié)構(gòu),可用于存儲各種類型的數(shù)據(jù)。它具有快速查找速度和無序的特點,使其成為許多應(yīng)用程序的理想選擇。
HashSet 的優(yōu)勢:
- 快速查找速度
- 無序,可以更快地添加和刪除元素
- 允許存儲任何類型的元素
HashSet 的劣勢:
- 不保留元素的插入順序
- 可能會出現(xiàn)哈希碰撞
建議:
- 如果需要快速查找數(shù)據(jù)并且不需要保留元素的插入順序,請使用
HashSet
。 - 如果需要保留元素的插入順序,請使用
LinkedHashSet
。 - 如果需要避免哈希碰撞,請使用
TreeMap
。
到此這篇關(guān)于Java中HashMap和HashSet的高效使用技巧分享的文章就介紹到這了,更多相關(guān)Java HashMap HashSet內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java LinkedHashSet集合的底層原理和TreeSet集合
- Java中的Set接口實現(xiàn)類HashSet和LinkedHashSet詳解
- Java集合ArrayList、LinkedList、HashMap、HashSet最大容量
- Java中HashSet、LinkedHashSet和TreeSet區(qū)別詳解
- java的==運算符和equals操作詳解
- Java中==和equals()的區(qū)別總結(jié)
- java兩個integer數(shù)據(jù)判斷相等用==還是equals
- 詳解Java中==和equals()的區(qū)別
- 淺談java字符串比較到底應(yīng)該用==還是equals
- java中的HashSet與 == 和 equals的區(qū)別示例解析
相關(guān)文章
Elasticsearch學(xué)習(xí)之Terms?set?查詢
這篇文章主要為大家介紹了Elasticsearch學(xué)習(xí)Terms?set?查詢示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02

Java中ArrayBlockingQueue和LinkedBlockingQueue

Java實現(xiàn)解壓zip壓縮包的兩種方法(支持多層級)

MyBatis中SqlSession實現(xiàn)增刪改查案例

SpringBoot?+DynamicDataSource切換多數(shù)據(jù)源的全過程