科普网站建设,专门做校招的网站,海南e登记app官网下载,娱乐建设网站一、基本概念 HashSet 定义#xff1a;只存储值#xff08;元素#xff09;的集合特点#xff1a;不允许重复元素#xff0c;无序底层实现#xff1a;基于 HashMap 实现 HashMap 定义#xff1a;存储键值对#xff08;key-value#xff09;的映射特点#xff1a;key …一、基本概念HashSet定义只存储值元素的集合特点不允许重复元素无序底层实现基于 HashMap 实现HashMap定义存储键值对key-value的映射特点key 不允许重复value 可以重复底层实现数组 链表/红黑树二、常用操作HashSet 常用方法SetString set new HashSet(); set.add(apple); // 添加元素 set.contains(apple); // 判断是否存在 set.remove(apple); // 删除元素 set.size(); // 获取大小 set.isEmpty(); // 判断是否为空 set.clear(); // 清空HashMap 常用方法MapString, Integer map new HashMap(); map.put(apple, 1); // 添加/更新 map.get(apple); // 获取值 map.containsKey(apple); // 判断key是否存在 map.remove(apple); // 删除 map.size(); // 获取大小 map.keySet(); // 获取所有key map.values(); // 获取所有value map.entrySet(); // 获取所有键值对三、时间复杂度HashSet添加/查找/删除O(1) 平均O(n) 最坏HashMap添加/查找/删除O(1) 平均O(n) 最坏四、使用场景HashSet 适用场景去重去除重复元素快速查找判断元素是否存在记录访问过的节点如检测链表环HashMap 适用场景计数统计元素出现次数缓存key-value 缓存索引快速根据 key 查找 value两数之和快速查找目标值五、实际应用示例HashSet 示例//去重 SetIntegersetnew HashSet(); for(int num:arr){ set.add(num); //自动去重 } //检测链表环 SetListNodevisited new HashSet(); while(node!null){ if(visited.contains(node)){ return true; } visited.add(node); nodenode.next; }HashMap 示例//计数 MapString,Integer countnew HashMap(); for(String word:words){ count.put(word,getOrDefault(word,0)1); }关键方法count.getOrDefault(word, 0)获取 word 对应的值不存在返回 0count.put(word, newCount)存入或更新 word 的计数执行过程words [apple, banana, apple]第1次applegetOrDefault(apple, 0) 0不存在put(apple, 0 1) → count {apple1}第2次bananagetOrDefault(banana, 0) 0put(banana, 0 1) → count {apple1, banana1}第3次applegetOrDefault(apple, 0) 1已存在put(apple, 1 1) → count {apple2, banana1}public int[] towSum(int[]nums,int target){ MapInteger,Integermapnew HashMap(); for(int i0;inums.length;i){ int needtarget-nums[i]; } if(map.containKey(need)){ int index1map.get(need); //之前遇到的数的索引 int index2i; //当前数的索引 int [] resultnew int[2]; result[0]index1; result[1]index2; return result; } //没找到把当前数和索引存入map map.put(nums[i],i); }六、注意事项equals 和 hashCode自定义类作为 key 或元素时必须重写null 值都允许一个 null 值线程安全都不是线程安全的初始容量默认 16负载因子 0.75遍历顺序不保证顺序七、总结对比表特性HashSetHashMap存储内容值元素键值对重复性不允许重复key 不允许重复时间复杂度O(1) 平均O(1) 平均主要用途去重、查找映射、计数常用方法add, contains, removeput, get, containsKey