HashMap 和 HashSet

Map和set是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。一般把搜索的数据称为关键字(Key),和关键字对应的称为值(Value),将其称之为Key-value的键值对,所以模型会有两种:
1. 纯 key 模型
2. Key-Value 模型

首先,Map是一个接口类,该类没有继承自Collection,该类中存储的是<K,V>结构的键值对,并且K一定是唯一的,不能重复。Map.Entry<K, V> 是Map内部实现的用来存放<key, value>键值对映射关系的内部类,该内部类中主要提供了<key, value>的获取,value的设置以及Key的比较方式。

常见的Map方法,例如get(Object key) ----返回 key 对应的 value;getOrDefault(Object key, V defaultValue) ----返回 key 对应的 value,key 不存在,返回默认值;remove(Object key)---- 删除 key 对应的映射关系;boolean containsValue(Object value) ----判断是否包含 value;boolean containsKey(Object key) ----判断是否包含 key。

接着,Set与Map主要的不同有两点:Set是继承自Collection的接口类,Set中只存储了Key。Set最大的功能就是对集合中的元素进行去重。

我们试着用以上知识写道练习题。

题目:给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

思路:计算每个元素出现的次数,检查元素出现次数,若次数等于,则返回这个元素。

JAVA代码如下:

class Solution {
    public int singleNumber(int[] nums) {
Map<Integer,Integer>countMap=new TreeMap<>();
for(int n:nums){
    int count=countMap.getOrDefault(n,0);
    count++;
    countMap.put(n,count);
}
for(Map.Entry<Integer,Integer>entry:countMap.entrySet()){
    int e=entry.getKey();
    int count=entry.getValue();
    if(count==1){
        return e;
    }
}
return -1;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值