【java学习笔记5】哈希表

一、基础知识

哈希表

哈希表(hash table)是根据关键码的值而直接进行访问的数据结构。数组就是一张哈希表,它的关键码是索引下标,数组能根据索引下标直接访问对应元素。

哈希表和python中的字典类似。

一般哈希表都是用来快速判断一个元素是否出现集合里,时间复杂度为O(1)

常用的三种哈希结构

  • 数组
  • 集合(set)
  • 映射(map)

二、映射

映射(map)是键值对(key-value),可以实现快速查找和修改value。

key不重复,所以使用put方法放入新的键值对,就会覆盖原key对应的键值对。

映射声明:

// key类型:String。value:String类型的列表
// 创建实例时用HashMap
Map<String, List<String>> map = new HashMap<String, List<String>>();

根据key值获取value:

// 创建新的变量接收value(类型与map的value一致)
// 用getOrDefault()方法,参数为key和value默认值

List<String> list = map.getOrDefault(key, new ArrayList<String>());

根据key/value查找:

Boolean keyExisted = map.containsKey(key);
Boolean valueExisted = map.containsValue(value);

增删键值对:

// list是key对应的value
// 如果key已存在,新的键值对将覆盖旧的
map.put(key, list);

// 从Map中移除指定的key-value对
map.remove(key);

三、集合

集合(set)是不重复的元素的集合,可以用来对数组等快速去重。并且集合可以快速查找和增删。

集合声明:

// 集合中元素的类型:Integer
// 创建实例时用HashSet

Set<Integer> set1 = new HashSet<Integer>();

查找元素:

// contains()方法,返回boolean值

if (set1.contains(i)) {
	...
}

增删元素:

// 增加元素i
set1.add(i);

// 移除指定元素
boolean removedElement = set.remove(2);
        
if (removedElement) {
    System.out.println("成功移除元素");
} else {
    System.out.println("未能找到要移除的元素");
}

四、使用说明

  • 当需要查询一个元素是否出现过,或者一个元素是否在集合里的时候,就要第一时间想到哈希表法。
  • 具体使用数组还是映射还是集合,根据是否需要快速查找、需要记录一个还是两个数据等要求选择。

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值