给定一个字符串,请输出该字符串由哪些字符组成,每个字符出现几次?(Map及其相关知识点)

哈喽,大家好呀

下面写一道简单的题

题意:

给定一个字符串,请输出该字符串由哪些字符组成,每个字符出现几次?

思路:

我是运用了Map集合,首先创建Map集合存储键值对(key,value),添加集合中元素,每一个字符作为key,字符出现的次数作为value,其次将键值对存入Set集合中,调用map.entrySet方法,最后将键值对遍历,就得到结果啦

下面代码展示:

运行结果展示:

代码展示结束,下面补充下Map集合的一些相关知识


Map集合体系

1、Map集合特点

        (1) 存储键值对(key-value),一个键值对为Map集合中一个元

        (2) 键:无序、无下标、元素不允许重复(唯一性)

        (3) 值:无序、无下标、元素可以重复

2、方法:

        (1) V put(K key,V value):往map集合中添加一个键值对,如果添加键值对key不存在,则直接添加;如果添加键值对key在当前map中已经存在,则用新的value替换原来的value,被替换的value作为返回值返回   

put两个含义:a. 添加       b. 修改:利用key修改value值

        (2) int size():获取map中键值对个数

        (3) V get(K key):根据key获取对应value值【重点】

        (4) boolean containsKey(K key):判断当前map集合中是否包含某一个键,包含-true;不包含-false

        (5) boolean containsValue(V value):判断当前集合中是否包含某一个值,包含-true;不包含-false

        (6) V remove(K key):根据键删除对应的键值对,被删除的value作为返回值返回

3、实现类:

        HashMap:JDK1.2版本,线程不安全,并发效率高,允许null作为key/value

        Hashtable:JDK1.0版本,线程安全,并发效率低,不允许null作为key/value

        LinkedHashMap:是HashMap子类,可以按照键添加的顺序进行存储

        Properties:是Hashtable子类,是Map的实现类,键和值默认为String

        (Properties pro = new Properties();),通常用于加载配置文件

4、遍历方式

        (1) 键遍历:【开发应用重点】

                a. 获取所有的键

                        Set<K>  keys = map.keySet();

                b. 遍历set集合获取每一个键:

                        for(K key:keys){

                                // 通过键获取对应的值

                                V value = map.get(key);

                                // 通过key和value操作

                        }

(2) 键值对遍历:

        a. 获取所有的键值对Entry

                Set<Map.Entry<K,V>>  kvs = map.entrySet();

        b. 遍历set集合获取每一个Entry

                for(Map.Entry<K,V>  kv : kvs){

                        // 从键值对获取键和值

                        K key = kv.getKey();

                        V value = kv.getVlaue();

        }

5、补充

        HashSet底层封装了HashMap,如果自定义类型的对象存储在HashMap中作为key,为了保证map的key不重复,自定义的对象对应类需要覆盖hashCode和equals方法;但是实际开发通常使用String/Integer类型作为Map的key,这些类已经覆盖了hashCode和equals方法。

        HashMap存储原理:HashMap底层为数组(Entry/Node存储键值对),每次存储键值对时,调用key对应对象的hashCode方法获取对象的哈希码值,通过计算获取一个存储下标,如果存储下标上没有元素,直接存储,但是如果存储下标上已经有其他元素,此时调用key对应equals方法,true-键已经存储在map中,利用新的value替换对应的value值;false-键不存在,则成功添加,此时采用数组+链表形式进行存储


好啦,今天的分享到此为止啦

大家如果有不懂的欢迎私聊我呀

晚安喽~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值