写点什么

Java HashMap 和 HashSet 的高效使用技巧

作者:小万哥
  • 2024-03-11
    广东
  • 本文字数:1800 字

    阅读完需:约 6 分钟

Java HashMap 和 HashSet 的高效使用技巧

Java HashMap

HashMap 是一种哈希表,它存储键值对。键用于查找值,就像数组中的索引一样。HashMap 的优势在于它可以使用任何类型作为键,并且查找速度很快。

创建 HashMap

// 导入 HashMap 类import java.util.HashMap;
public class Main { public static void main(String[] args) { // 创建一个名为 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 中的项目数量int size = capitalCities.size();
复制代码

循环遍历 HashMap

// 遍历 HashMap 并打印键和值for (String key : capitalCities.keySet()) {    String value = capitalCities.get(key);    System.out.println("Key: " + key + ", Value: " + value);}
复制代码

使用其他类型

HashMap 可以存储任何类型的键和值。例如,您可以存储 Integer 键和 String 值:


// 创建一个名为 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 是一种强大的数据结构,可用于存储各种类型的数据。它具有快速查找速度和灵活的键值对存储机制,使其成为许多应用程序的理想选择。


HashMap 的优势:


  • 快速查找速度

  • 可以存储任何类型的键和值

  • 灵活的键值对存储机制


HashMap 的劣势:


  • 不是线程安全的

  • 可能会出现哈希碰撞


建议:


  • 如果需要快速查找数据,请使用 HashMap

  • 如果需要线程安全的数据结构,请使用 ConcurrentHashMap

  • 如果需要避免哈希碰撞,请使用 LinkedHashMap

Java HashSet

HashSet 是一个无序集合,其中每个元素都是唯一的。它基于哈希表实现,因此查找速度很快。

创建 HashSet

// 导入 HashSet 类import java.util.HashSet;
public class Main { public static void main(String[] args) { // 创建一个名为 cars 的 HashSet 对象,将存储字符串 HashSet<String> cars = new HashSet<>(); }}
复制代码

添加项目

// 添加项目cars.add("Volvo");cars.add("BMW");cars.add("Ford");cars.add("BMW"); // 不会重复添加cars.add("Mazda");
// 查看 HashSetSystem.out.println(cars);
复制代码

检查项目是否存在

// 检查项目是否存在boolean isPresent = cars.contains("Mazda");
// 输出结果System.out.println("Mazda 在 HashSet 中吗? " + isPresent);
复制代码

删除项目

// 删除项目cars.remove("Volvo");
// 查看 HashSetSystem.out.println(cars);
复制代码

HashSet 大小

// 获取 HashSet 大小int size = cars.size();
// 输出结果System.out.println("HashSet 大小:" + size);
复制代码

循环遍历 HashSet

// 循环遍历 HashSetfor (String car : cars) {    System.out.println(car);}
复制代码

使用其他类型

HashSet 可以存储任何类型的元素。例如,您可以存储 Integer 元素:


// 创建一个名为 numbers 的 HashSet 对象,将存储整数HashSet<Integer> numbers = new HashSet<>();
// 添加元素numbers.add(1);numbers.add(2);numbers.add(3);
// 循环遍历 HashSetfor (int number : numbers) { System.out.println(number);}
复制代码


HashSet 是一种非常有用的数据结构,可用于存储各种类型的数据。它具有快速查找速度和无序的特点,使其成为许多应用程序的理想选择。


HashSet 的优势:


  • 快速查找速度

  • 无序,可以更快地添加和删除元素

  • 允许存储任何类型的元素


HashSet 的劣势:


  • 不保留元素的插入顺序

  • 可能会出现哈希碰撞


建议:


  • 如果需要快速查找数据并且不需要保留元素的插入顺序,请使用 HashSet

  • 如果需要保留元素的插入顺序,请使用 LinkedHashSet

  • 如果需要避免哈希碰撞,请使用 TreeMap

最后

为了方便其他设备和平台的小伙伴观看往期文章:


微信公众号搜索:Let us Coding,关注后即可获取最新文章推送


看完如果觉得有帮助,欢迎 点赞、收藏、关注

发布于: 刚刚阅读数: 3
用户头像

小万哥

关注

代码如人生 2023-02-09 加入

编程爱好者

评论

发布
暂无评论
Java HashMap 和 HashSet 的高效使用技巧_Java_小万哥_InfoQ写作社区