Java学习笔记-5

Java学习笔记-5

一、Map集合

1.双列集合,为键值对形式,类似于python的字典
2.key不允许重复,value可重复

1.HashMap

1.实现了Map接口
2.底层为哈希表,查询速度快
3.存取无序

1)LinkedHashMap

1.继承了HashMap
2.底层为哈希表+链表
3.存取有序

2)存储自定义类型元素

由于key不重复,故自定义类必须重写hashCode和equals方法

2.HashTable

1.底层为哈希表,单线程(HashMap为多线程),速度慢
2.key和value均不能为null

3.常用方法

1.put(key,value) 将键值对插入集合,若key重复则返回被替代的value,否则返回null
2.remove(key) 删除指定键值对,若key存在返回对应的value,不存在则返回null
3.get(key) 获得键对应的值,key不存在返回null
4.containsKey(key) 判断是否包含指定键,返回布尔值

遍历Map

1.keySet() 将集合中全部键取出存储到一个Set集合中,再遍历Set集合通过get(key)方法遍历value

2.Entry接口
在Map创建时会自动创建Entry对象记录键和值,一个键值对对应一个Entry对象
(1) entrySet() 将Map内全部Entry对象取出放入Set
(2) getKey() 获取key
(3) getValue() 获取value


二、Debug调试

f8:执行下一行
f7:进入方法
shift+f8:跳出方法
f9:跳到下一断点


package day4;

import java.util.*;

public class day4 {
    public static void main(String[] args) {
        Map<String,String> map = new HashMap<>();
        map.put("A","AAA");
        map.put("B","BBB");
        map.put("C","CCC");
        map.remove("B");
        System.out.println(map);

        //遍历
        Set<String> set = map.keySet();
//        for(String s : set)
//        {
//            System.out.println(map.get(s));
//        }

        Iterator it = set.iterator();
        while(it.hasNext())
        {
            System.out.println(map.get(it.next()));
        }

        Set<Map.Entry<String,String>> set2 = map.entrySet();
        for(Map.Entry<String,String> entry : set2)
        {
            String key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key + "=" + value);
        }

        //存储自定义类型元素
        Map<Person,String> map2 = new HashMap<Person, String>();
        map2.put(new Person("张三",18),"中国");
        map2.put(new Person("Andy",19),"美国");
        map2.put(new Person("李四",20),"中国");
        map2.put(new Person("Andy",19),"法国");

        Set<Map.Entry<Person,String>> set3 = map2.entrySet();
        for(Map.Entry<Person,String> entry : set3)
        {
            System.out.println(entry.getKey() + " " + entry.getValue());
        }

        //统计一个字符串中每个字符出现的次数
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入内容:");
        String str = sc.next();
        char[] content = str.toCharArray();
        LinkedHashMap<Character,Integer> map3 = new LinkedHashMap<>();

        for(int i = 0;i < content.length; i++)
        {
            if(map3.containsKey(content[i]))
            {
                Integer value = map3.get(content[i]);
                value++;
                map3.put(content[i],value);
            }
            else
            {
                map3.put(content[i],1);
            }
        }

        Set<Map.Entry<Character,Integer>> txt = map3.entrySet();
        for(Map.Entry<Character,Integer> entry2 : txt)
        {
            System.out.println(entry2.getKey() + ":" + entry2.getValue() + "次");
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值