MEC@JavaSE@进阶篇@笔记08@Map集合介绍以及常用API

一、Map接口

1、 Map集合作用

Map表示双列集合,双列集合也叫键值对集合,用来保存一对一的键值对元素。

put(key,value);

put(key,value);

2、Map集合体系

3、Map常用方法

方法说明
V put(K key, V value)添加键值对
V remove(Object key)根据键删除对应的键值对
V get(Object key)根据键获取值
boolean containsKey(Object key)判断是否包含某个键
boolean containsValue(Object value)判断是否包含某个值
Set<K> keySet()把键转换成Set集合
Set<Map.Entry<K,V>> entrySet()把键值对转成Set集合

代码演示

import javax.jnlp.IntegrationService;
import java.util.HashMap;
import java.util.Map;
​
public class Test01 {
    public static void main(String[] args) {
        //创建Map集合
        Map<String, Integer> map = new HashMap<>();
​
        //V put(K key, V value)添加键值对
        map.put("迪丽热巴",18);
        map.put("古力娜扎",19);
        map.put("马尔扎哈",20);
        map.put("尼格买提",21);
​
        //map集合中的key不能重复
        //map.put("古力娜扎",20);
​
        //V remove(Object key)根据键删除对应的键值对
        map.remove("马尔扎哈");
​
        //V get(Object key)根据键获取值
        Integer age = map.get("古力娜扎");
        System.out.println(age);
​
        //boolean containsKey(Object key) 判断是否包含某个键
        boolean b = map.containsKey("古力娜扎");
        System.out.println(b);
​
        //boolean containsValue(Object value)判断是否包含某个值
        boolean b1 = map.containsValue(19);
        System.out.println(b1);
​
​
        System.out.println(map);
    }
}

4、Map的遍历

keySet()键找值方式​

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
​
public class Test02 {
​
    public static void main(String[] args) {
        //创建Map集合
        Map<String, Integer> map = new HashMap<>();
​
        //V put(K key, V value)添加键值对
        map.put("迪丽热巴",18);
        map.put("古力娜扎",19);
        map.put("马尔扎哈",20);
        map.put("尼格买提",21);
​
        //Set<K> keySet() 把键转换成Set集合
        Set<String> set = map.keySet();
        //得到迭代器对象
        Iterator<String> it = set.iterator();
        while (it.hasNext()){
            String key = it.next(); //获得第个key
            Integer value = map.get(key);
            System.out.println(key+"\t"+value);
        }
    }
}

entrySet()键值对方式

//*****************************************
//Set<Map.Entry<K,V>> entrySet()把键值对转成Set集合
/*Set<Map.Entry<String, Integer>> set1 = map.entrySet();
        for(Map.Entry<String,Integer> entry : set1){
            String key = entry.getKey();
            Integer value = entry.getValue();
            System.out.println(key+"\t"+value);
        }*/
​
for (Map.Entry<String, Integer> entry : map.entrySet()) {
    String key = entry.getKey(); //获取key
    Integer value = entry.getValue(); //获取value
    System.out.println(key+"\t"+value);
}

5、HashMap集合(存储自定义对象类型数据)

特点:

元素键不能重复,元素存取无序

HashMap键不重复也是依赖于hashCode()和equals()方法

import java.util.HashMap;
import java.util.Map;
​
public class Test03Map {
    public static void main(String[] args) {
        //创建一个Map集合,保存对象类型数据
        Map<Person,String> map = new HashMap();
        map.put(new Person("张三",18 ), "吉林");
        map.put(new Person("李四",18),"北京");
        map.put(new Person("王麻子",6),"湖北");
        map.put(new Person("李瘸子",38),"江西");
        map.put(new Person("zz",18),"广东");
​
        System.out.println(map);
​
    }
}

6、LinkedHashMap集合

特点

元素键不能重复

元素存取有序

代码演示

import java.util.LinkedHashMap;
public class Test05 {
    public static void main(String[] args) {
​
        //LinkedHashMap
        //元素键不能重复   元素存取有序
        LinkedHashMap<String,String> map = new LinkedHashMap<>();
​
        //添加元素
        map.put("张三","李四");
        map.put("王五","赵六");
​
        //存储相同的键,会用新的值覆盖旧的值
        map.put("张三","张思");
​
        System.out.println(map);   
                    // 先放的张三后放到王五,所以张三在前 {张三=张思, 王五=赵六}
    }
}

7、练习

需求:输入一个字符串判断里面每个字符出现次数。统计有多少种字符。

键盘输入一个字符串: abcdabc

a=2 b=2 c=2 d=1

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
​
public class TestExmp {
    public static void main(String[] args) {
        //需求:输入一个字符串判断里面每个字符出现次数。统计有多少种字符。
        // •    键盘输入一个字符串: abcdabc
​
        //创建Map<String,Integer>集合
        Map<String, Integer> map = new HashMap<>();
​
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String str = sc.nextLine();  //abcdabc
​
        //处理字符串
        /*for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
        }*/
​
        char[] chars = str.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            String c = chars[i]+"";
            //判断map集合中是否存在此字符
            if(map.containsKey(c)){  //abacdabc
                //如果集合已经有了这个key
                int count = map.get(c); //把原有的value取出
                count++;
                map.put(c,count); //再放回去
            }else {  //如果集合中没有这个key,把value直接赋值为1
                map.put(c, 1); // a 1
            }
        }
​
        //System.out.println(map);
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            String key = entry.getKey();
            Integer value = entry.getValue();
            System.out.println(key+"---"+value);
        }
​
        Set<String> set = map.keySet();
        System.out.println(set.size());
​
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值