Java HashMap 和 HashSet 的高效利用技巧

打印 上一主题 下一主题

主题 919|帖子 919|积分 2757

Java HashMap

HashMap 是一种哈希表,它存储键值对。键用于查找值,就像数组中的索引一样。HashMap 的上风在于它可以利用任何类型作为键,并且查找速率很快。
创建 HashMap
  1. // 导入 HashMap 类
  2. import java.util.HashMap;
  3. public class Main {
  4.     public static void main(String[] args) {
  5.         // 创建一个名为 capitalCities 的 HashMap 对象,将存储 String 键和 String 值
  6.         HashMap<String, String> capitalCities = new HashMap<>();
  7.     }
  8. }
复制代码
添加项目
  1. // 添加键和值(国家,城市)
  2. capitalCities.put("England", "London");
  3. capitalCities.put("Germany", "Berlin");
  4. capitalCities.put("Norway", "Oslo");
  5. capitalCities.put("USA", "Washington DC");
复制代码
访问项目
  1. // 获取 England 的首都
  2. String capitalOfEngland = capitalCities.get("England");
复制代码
删除项目
  1. // 删除 England 的首都
  2. capitalCities.remove("England");
复制代码
HashMap 大小
  1. // 获取 HashMap 中的项目数量
  2. int size = capitalCities.size();
复制代码
循环遍历 HashMap
  1. // 遍历 HashMap 并打印键和值
  2. for (String key : capitalCities.keySet()) {
  3.     String value = capitalCities.get(key);
  4.     System.out.println("Key: " + key + ", Value: " + value);
  5. }
复制代码
利用其他类型

HashMap 可以存储任何类型的键和值。例如,您可以存储 Integer 键和 String 值:
  1. // 创建一个名为 people 的 HashMap 对象,将存储 Integer 键和 String 值
  2. HashMap<Integer, String> people = new HashMap<>();
  3. // 添加键和值(ID,姓名)
  4. people.put(1, "John Doe");
  5. people.put(2, "Jane Doe");
  6. // 获取 ID 为 1 的姓名
  7. String name = people.get(1);
复制代码
HashMap 是一种强大的数据结构,可用于存储各种类型的数据。它具有快速查找速率和灵活的键值对存储机制,使其成为很多应用程序的理想选择。
HashMap 的上风:

  • 快速查找速率
  • 可以存储任何类型的键和值
  • 灵活的键值对存储机制
HashMap 的劣势:

  • 不是线程安全的
  • 可能会出现哈希碰撞
建议:

  • 如果需要快速查找数据,请利用 HashMap。
  • 如果需要线程安全的数据结构,请利用 ConcurrentHashMap。
  • 如果需要避免哈希碰撞,请利用 LinkedHashMap。
Java HashSet

HashSet 是一个无序集合,此中每个元素都是唯一的。它基于哈希表实现,因此查找速率很快。
创建 HashSet
  1. // 导入 HashSet 类
  2. import java.util.HashSet;
  3. public class Main {
  4.     public static void main(String[] args) {
  5.         // 创建一个名为 cars 的 HashSet 对象,将存储字符串
  6.         HashSet<String> cars = new HashSet<>();
  7.     }
  8. }
复制代码
添加项目
  1. // 添加项目
  2. cars.add("Volvo");
  3. cars.add("BMW");
  4. cars.add("Ford");
  5. cars.add("BMW"); // 不会重复添加
  6. cars.add("Mazda");
  7. // 查看 HashSet
  8. System.out.println(cars);
复制代码
检查项目是否存在
  1. // 检查项目是否存在
  2. boolean isPresent = cars.contains("Mazda");
  3. // 输出结果
  4. System.out.println("Mazda 在 HashSet 中吗? " + isPresent);
复制代码
删除项目
  1. // 删除项目
  2. cars.remove("Volvo");
  3. // 查看 HashSet
  4. System.out.println(cars);
复制代码
HashSet 大小
  1. // 获取 HashSet 大小
  2. int size = cars.size();
  3. // 输出结果
  4. System.out.println("HashSet 大小:" + size);
复制代码
循环遍历 HashSet
  1. // 循环遍历 HashSet
  2. for (String car : cars) {
  3.     System.out.println(car);
  4. }
复制代码
利用其他类型

HashSet 可以存储任何类型的元素。例如,您可以存储 Integer 元素:
  1. // 创建一个名为 numbers 的 HashSet 对象,将存储整数
  2. HashSet<Integer> numbers = new HashSet<>();
  3. // 添加元素
  4. numbers.add(1);
  5. numbers.add(2);
  6. numbers.add(3);
  7. // 循环遍历 HashSet
  8. for (int number : numbers) {
  9.     System.out.println(number);
  10. }
复制代码
HashSet 是一种非常有用的数据结构,可用于存储各种类型的数据。它具有快速查找速率和无序的特点,使其成为很多应用程序的理想选择。
HashSet 的上风:

  • 快速查找速率
  • 无序,可以更快地添加和删除元素
  • 答应存储任何类型的元素
HashSet 的劣势:

  • 不保留元素的插入顺序
  • 可能会出现哈希碰撞
建议:

  • 如果需要快速查找数据并且不需要保留元素的插入顺序,请利用 HashSet。
  • 如果需要保留元素的插入顺序,请利用 LinkedHashSet。
  • 如果需要避免哈希碰撞,请利用 TreeMap。
末了

为了方便其他设备和平台的小同伴观看往期文章:
微信公众号搜索:Let us Coding,关注后即可获取最新文章推送
看完如果以为有帮助,欢迎 点赞、收藏、关注

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

郭卫东

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表