Java HashMap 和 HashSet 的高效使用技巧

Java HashMap

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

创建 HashMap

1// 导入 HashMap 类 2import java.util.HashMap; 3 4public class Main { 5 public static void main(String[] args) { 6 // 创建一个名为 capitalCities 的 HashMap 对象,将存储 String 键和 String 值 7 HashMap<String, String> capitalCities = new HashMap<>(); 8 } 9}

添加项目

1// 添加键和值(国家,城市) 2capitalCities.put("England", "London"); 3capitalCities.put("Germany", "Berlin"); 4capitalCities.put("Norway", "Oslo"); 5capitalCities.put("USA", "Washington DC");

访问项目

1// 获取 England 的首都 2String capitalOfEngland = capitalCities.get("England");

删除项目

1// 删除 England 的首都 2capitalCities.remove("England");

HashMap 大小

1// 获取 HashMap 中的项目数量 2int size = capitalCities.size();

循环遍历 HashMap

1// 遍历 HashMap 并打印键和值 2for (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 值 2HashMap<Integer, String> people = new HashMap<>(); 3 4// 添加键和值(ID,姓名) 5people.put(1, "John Doe"); 6people.put(2, "Jane Doe"); 7 8// 获取 ID 为 1 的姓名 9String name = people.get(1);

HashMap 是一种强大的数据结构,可用于存储各种类型的数据。它具有快速查找速度和灵活的键值对存储机制,使其成为许多应用程序的理想选择。

HashMap 的优势:

  • 快速查找速度
  • 可以存储任何类型的键和值
  • 灵活的键值对存储机制

HashMap 的劣势:

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

建议:

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

Java HashSet

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

创建 HashSet

1// 导入 HashSet 类 2import java.util.HashSet; 3 4public class Main { 5 public static void main(String[] args) { 6 // 创建一个名为 cars 的 HashSet 对象,将存储字符串 7 HashSet<String> cars = new HashSet<>(); 8 } 9}

添加项目

1// 添加项目 2cars.add("Volvo"); 3cars.add("BMW"); 4cars.add("Ford"); 5cars.add("BMW"); // 不会重复添加 6cars.add("Mazda"); 7 8// 查看 HashSet 9System.out.println(cars);

检查项目是否存在

1// 检查项目是否存在 2boolean isPresent = cars.contains("Mazda"); 3 4// 输出结果 5System.out.println("Mazda 在 HashSet 中吗? " + isPresent);

删除项目

1// 删除项目 2cars.remove("Volvo"); 3 4// 查看 HashSet 5System.out.println(cars);

HashSet 大小

1// 获取 HashSet 大小 2int size = cars.size(); 3 4// 输出结果 5System.out.println("HashSet 大小:" + size);

循环遍历 HashSet

1// 循环遍历 HashSet 2for (String car : cars) { 3 System.out.println(car); 4}

使用其他类型

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

1// 创建一个名为 numbers 的 HashSet 对象,将存储整数 2HashSet<Integer> numbers = new HashSet<>(); 3 4// 添加元素 5numbers.add(1); 6numbers.add(2); 7numbers.add(3); 8 9// 循环遍历 HashSet 10for (int number : numbers) { 11 System.out.println(number); 12}

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

HashSet 的优势:

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

HashSet 的劣势:

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

建议:

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

最后

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

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

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

点赞
收藏

评论区

加载中...

相关推荐

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

HashMap的理解

HashMap在Map.Entry静态内部类实现中存储keyvalue对。HashMap使用哈希算法,在put和get方法中,它使用hashCode()和equals()方法。当我们通过传递keyvalue对调用put方法的时候,HashMap使用KeyhashCode()和哈希算法来找出存储keyvalue对的索引。Entry存储在LinkedL

java中的HashMap和TreeMap

HashMap和TreeMap两者都是Map,java中的Map以键值对来存储数据,通过键key来索引值value。HashMap通过hashcode对其内容进行快速查找,其结果时无序的;TreeMap中的所有元素都默认进行了排序,所以当需要一个有序的结果时,使用TreeMap是比较方便的。具体的定义和遍历方法,可以看下面的例子:

HashMap 怎么 hash?又如何 map?

HashMap 是Java中Map的一个实现类,它是一个双列结构(数据链表),这样的结构使得它的查询和插入效率都很高。HashMap允许null键和值,它的键唯一,元素的存储无序,并且它是线程不安全的。!(https://oscimg.oschina.net/oscnet/24e81018b69298cf434a8eb39682070

HashMap1.7和1.8,红黑树原理!

jdk1.7概述HashMap基于Map接口实现,元素以键值对的方式存储,并允许使用null键和null值,但只能有一个键作为null,因为key不允许重复,另外HashMap不能保证放入元素的数据,它是无序的,和放入的顺序并不能相同,HashMap是线程不安全的。继承关系publicclassH