集合--Map集合--Map集合案例、面试题

Map集合案例

/*

    "aababcabcdabcde",获取键盘录入字符串中每一个字母出现的次数
    要求结果:a(5)b(4)c(3)d(2)e(1)

    1、键盘录入一个字符串
    2、使用TreeMap集合对象
        键:Character
        值:Integer
    3、将字符串转换从字符数组
    4、遍历字符数组获取每一个字符
    5、拿着获取到的字符去集合中键去找,看看有没有这个键
        如果没有,就把这个字符当作key,value值为1进行存储
        如果有,就把该字符对应的值+1,重新存储到集合中
    6、定义一个StringBuffer作为拼接
    7、遍历集合,得到键和值,按照指定的输出对进行拼接a(5)b(4)c(3)d(2)e(1)
    8、将StringBuffer转换成字符串输出

*/

import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;

public class MapTest1 {
    public static void main(String[] args) {
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入一个纯英语的字符串:");
        String s = sc.next();

        //创建TreeMap集合对象
        TreeMap<Character, Integer> map = new TreeMap<>();

        //将字符串转换从字符数组
        char[] chars = s.toCharArray();

        //遍历字符数组获取每一个字符
        for (char c : chars) {
            //拿着获取到的字符当成键去集合中找对应的值,看看有没有
            Integer value = map.get(c);

            if (value == null) {
                map.put(c, 1);
            } else {
                value++;
                map.put(c, value);
            }
        }

        //定义一个StringBuffer作为拼接
        StringBuffer sb = new StringBuffer();

        //遍历集合得到每一个键和值
        Set<Map.Entry<Character, Integer>> entries = map.entrySet();
        for (Map.Entry<Character, Integer> entry : entries) {
            Character key = entry.getKey();
            Integer value = entry.getValue();
            sb.append(key).append("(").append(value).append(")");
        }

        //将StringBuffer转换成字符串输出
        String string = sb.toString();
        System.out.println("计算每个字符的个数为:" + string);
    }
}

面试题

import java.util.HashMap;
import java.util.Hashtable;

/*

    HashMap与Hashtable的区别(面试题)
        1、HashMap中的key和value允许为null值,而Hashtable不允许
        2、Hashtable是线程安全的,HashMap是线程不安全的
*/

public class HashMapAndHashtableDemo {
    public static void main(String[] args) {
        HashMap<String, String> map1 = new HashMap<>();
        map1.put(null, null);
        System.out.println(map1);

        Hashtable<String, String> map2 = new Hashtable<>();
        //NullPointerException
//        map2.put(null, null);
        System.out.println(map2);
    }
}
posted @ 2021-12-23 22:41  赤兔胭脂小吕布  阅读(33)  评论(0编辑  收藏  举报