Hashtable集合和练习

Hashtable集合

Hashtable<K,V>集合 implements Map<K,V>接口

 

Hashtable:底层也是一个哈希表,是一个线程安全的集合,是单线程集合,速度慢

HashMap:底层Wie一个哈希表,是一个线程不安全的集合,是多线程的集合,速度快

 

HashMap集合(之前学的所有的集合):可以存储null值,null键

Hashtable集合,不能存储null值,null键

 

Hashtable和Vector集合一样,在jak1.2版本之后被更先进的集合(HashMap,ArrayList)取代了

Hashtable的子类Properties依然活跃(Properties集合是一个唯一和UI流相结合的集合)

 

        HashMap<String, String> map = new HashMap<>();
        map.put(null,"a");
        map.put("b",null);
        map.put(null,null);
        System.out.println(map);

        Hashtable<String, String> hashtable = new Hashtable<>();
        hashtable.put(null,null);

 

 

 

练习

计算一个字符串每个字符出现的次数

1.使用Scanner获取用户输入的字符串

2.创建Map集合,key是字符串中的字符,value是字符的个数

3.使用获取到的字符去Map集合判断key是否存在

  key存在:

    通过字符(key),获取value(字符个数)

    value++

    put(key,value)把新的value存储到Map集合中

  key不存在:

    put(key,1)

5.遍历Map集合,输出结果

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入一个字符串");
        String str = sc.next();
        //创建Map集合,key是字符串中的字符
        HashMap<Character,Integer> map = new HashMap<>();
        for (char c:str.toCharArray()){
            if (map.containsKey(c)){
                //key存在
                Integer value = map.get(c);
                value++;
                map.put(c,value);
            }else {
                //key不存在
                map.put(c,1);
            }
        }
        //遍历Map集合
        for (Character key : map.keySet()){
            Integer value = map.get(key);
            System.out.println(key+"="+value);
        }
    }

 

posted @ 2022-07-07 15:41  魔光领域  阅读(22)  评论(0编辑  收藏  举报