前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java HashMap 和 HashSet 的高效使用技巧

Java HashMap 和 HashSet 的高效使用技巧

原创
作者头像
小万哥
发布2024-03-11 21:09:10
1720
发布2024-03-11 21:09:10
举报
文章被收录于专栏:程序人生丶

Java HashMap

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

创建 HashMap

代码语言:java
复制
// 导入 HashMap 类
import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        // 创建一个名为 capitalCities 的 HashMap 对象,将存储 String 键和 String 值
        HashMap<String, String> capitalCities = new HashMap<>();
    }
}

添加项目

代码语言:java
复制
// 添加键和值(国家,城市)
capitalCities.put("England", "London");
capitalCities.put("Germany", "Berlin");
capitalCities.put("Norway", "Oslo");
capitalCities.put("USA", "Washington DC");

访问项目

代码语言:java
复制
// 获取 England 的首都
String capitalOfEngland = capitalCities.get("England");

删除项目

代码语言:java
复制
// 删除 England 的首都
capitalCities.remove("England");

HashMap 大小

代码语言:java
复制
// 获取 HashMap 中的项目数量
int size = capitalCities.size();

循环遍历 HashMap

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

使用其他类型

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

代码语言:java
复制
// 创建一个名为 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

代码语言:java
复制
// 导入 HashSet 类
import java.util.HashSet;

public class Main {
    public static void main(String[] args) {
        // 创建一个名为 cars 的 HashSet 对象,将存储字符串
        HashSet<String> cars = new HashSet<>();
    }
}

添加项目

代码语言:java
复制
// 添加项目
cars.add("Volvo");
cars.add("BMW");
cars.add("Ford");
cars.add("BMW"); // 不会重复添加
cars.add("Mazda");

// 查看 HashSet
System.out.println(cars);

检查项目是否存在

代码语言:java
复制
// 检查项目是否存在
boolean isPresent = cars.contains("Mazda");

// 输出结果
System.out.println("Mazda 在 HashSet 中吗? " + isPresent);

删除项目

代码语言:java
复制
// 删除项目
cars.remove("Volvo");

// 查看 HashSet
System.out.println(cars);

HashSet 大小

代码语言:java
复制
// 获取 HashSet 大小
int size = cars.size();

// 输出结果
System.out.println("HashSet 大小:" + size);

循环遍历 HashSet

代码语言:java
复制
// 循环遍历 HashSet
for (String car : cars) {
    System.out.println(car);
}

使用其他类型

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

代码语言:java
复制
// 创建一个名为 numbers 的 HashSet 对象,将存储整数
HashSet<Integer> numbers = new HashSet<>();

// 添加元素
numbers.add(1);
numbers.add(2);
numbers.add(3);

// 循环遍历 HashSet
for (int number : numbers) {
    System.out.println(number);
}

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

HashSet 的优势:

  • 快速查找速度
  • 无序,可以更快地添加和删除元素
  • 允许存储任何类型的元素

HashSet 的劣势:

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

建议:

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

最后

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

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java HashMap
    • 创建 HashMap
      • 添加项目
        • 访问项目
          • 删除项目
            • HashMap 大小
              • 循环遍历 HashMap
                • 使用其他类型
                • Java HashSet
                  • 创建 HashSet
                    • 添加项目
                      • 检查项目是否存在
                        • 删除项目
                          • HashSet 大小
                            • 循环遍历 HashSet
                              • 使用其他类型
                              • 最后
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档