使用entrySet()
方法遍历键值对:
for (Map.Entry<String, Integer> entry : map.entrySet()) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key + ": " + value);
}
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
检查元素是否存在
使用containsKey(Object key)
方法检查是否包含某个键:
boolean containsKey = map.containsKey("key1");
System.out.println(containsKey);
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
获取大小
使用size()
方法获取HashMap
中键值对的数量:
int size = map.size();
System.out.println(size);
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
清空HashMap
使用clear()
方法清空HashMap
中的所有元素:
map.clear();
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
判断HashMap是否为空
使用isEmpty()
方法判断HashMap
是否为空:
boolean isEmpty = map.isEmpty();
System.out.println(isEmpty);
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
其他常用方法
putIfAbsent(K key, V value)
:如果指定的键尚未与某个值关联,则将其与给定值关联。replace(K key, V value)
:替换指定键对应的值。getOrDefault(Object key, V defaultValue)
:获取指定键对应的值,如果键不存在,则返回默认值。
两数之和(题解)
一、题目:
力扣链接
给定一个整数数组 nums
和一个整数目标值 target
,请你在该数组中找出 和为目标值 target
的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按任意顺序返回答案。
示例 1:
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
示例 2:
输入:nums = [3,2,4], target = 6
输出:[1,2]
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
二、思路:
- 本题可以用暴力直接双循环写出来,或者就是当我们需要查询一个元素是否出现过,或者一个元素是否在集合里的时候,就要第一时间想到哈希法。
- 此题可以理解为在一个集合中寻找是否存在一个与当前遍历数组元素相加之和等于
target
的数。 - 因为本题,我们不仅要知道元素有没有遍历过,还要知道这个元素对应的下标,需要使用
key
value
结构来存放,key
来存元素,value
来存下标,那么使用HashMap正合适。
三、代码实现:
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer,Integer> map1 = new HashMap<>();
for(int i = 0; i < nums.length; i ++){
if(map1.containsKey(target - nums[i])){
return new int []{i, map1.get((target - nums[i]))};
}
else{
map1.put(nums[i], i);
}
}
return null;
}
}
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
class="hide-preCode-box">
四、注意点:
- 往HashMap里面添加的时候一定要等第一遍获取值之后再添加,因为如果
target
=6,nums[i] = 3
的话,那么就会把第一个添加的元素3返回两次造成错误。
data-report-view="{"mod":"1585297308_001","spm":"1001.2101.3001.6548","dest":"https://blog.csdn.net/2402_82473645/article/details/145715582","extend1":"pc","ab":"new"}">>
评论记录:
回复评论: