Map集合

该博客展示了Java中Map接口的常见操作,包括创建、添加、删除、获取键值、判断空、遍历等,并通过实例演示了键找值、键值对遍历以及Lambda表达式的使用。此外,还提出了一种统计多个选项票数的方法,利用Map存储统计结果并更新票数。
摘要由CSDN通过智能技术生成

一,常用API

添加,清空,判断是否为空,根据键获取值,根据键删除整个元素,判读是否包含某个键/值,获取全部键/值的集合,集合的大小

package Map;

import java.util.*;


public class Map1 {
    public static void main(String[] args) {
        //1.创建一个Map集合对象
        Map<String, Integer> maps=new HashMap<>();
     //   Map<String, Integer> maps=new LinkedHashMap<>();
        maps.put("aa",3);
        maps.put("bb",99);
        maps.put("cc",100);
        maps.put("aa",66);//覆盖
        maps.put("dd",110);
        maps.put(null,null);
        System.out.println(maps);

        //2.清空集合
//        maps.clear();
//        System.out.println(maps);

        //3.判断集合是否为空,为空返回true,反之false
        System.out.println(maps.isEmpty());

        //4.根据键获取对应值
       Integer key= maps.get("aa");
        System.out.println(key);
        System.out.println(maps.get("bb"));
        System.out.println(maps.get("bb1"));//null

        //5.根据键删除整个元素(删除键会返回键的值)
        System.out.println(maps.remove("dd"));
        System.out.println(maps);

        //6.判断是否包含某个键,包含返回true
        System.out.println(maps.containsKey("aa"));
        System.out.println(maps.containsKey("ee"));

        //7.判断是否包含某个值,包含返回true
        System.out.println(maps.containsValue(100));

        System.out.println("===========================");
        //8.获取全部键的集合
        Set<String> keys=maps.keySet();
        System.out.println(keys);

        //9.获取全部值得集合
        Collection<Integer> values=maps.values();
        System.out.println(values);

        //10.集合的大小
        System.out.println(maps.size());

        //11.合并其他Map集合
        Map<String,Integer> map1=new HashMap<>();
        map1.put("java1",1);
        map1.put("java2",9);
        Map<String,Integer> map2=new HashMap<>();
        map1.put("java2",100);
        map1.put("java3",9900);
        map1.putAll(map2);//把集合map2拷贝一份到map1,但是map2还有
        System.out.println(map1);
        System.out.println(map2);



    }

}

二,Map集合遍历

1.键找值(推荐)

单个取

import java.util.Map;
import java.util.Set;

public class Map2 {
    public static void main(String[] args) {
        Map<String, Integer> maps=new HashMap<>();
        maps.put("aa",3);
        maps.put("bb",99);
        maps.put("cc",100);
        maps.put("dd",110);
        System.out.println(maps);

        //1.键找值,先拿到集合的全部键
        Set<String> keys=maps.keySet();
        //2.遍历每个键,根据键提取值
        for (String key : keys) {
            int value=maps.get(key);
            System.out.println(key+"======>"+value);
        }
        
    }
}

========================================================

2.键值对

面向对象,先取出键值对再分别取

package Map;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Map3 {
    public static void main(String[] args) {
        Map<String, Integer> maps=new HashMap<>();
        maps.put("aa",3);
        maps.put("bb",99);
        maps.put("cc",100);
        maps.put("dd",110);
        System.out.println(maps);

        //1.把Map集合转换成Set集合
        Set<Map.Entry<String, Integer>> entries = maps.entrySet();
        //2.开始遍历
        for (Map.Entry<String, Integer> entry:entries){
            String key=entry.getKey();
            int value=entry.getValue();
            System.out.println(key+"=====>"+value);
        }

    }
}

===========================================

3.Lambda (推荐)

package Map;

import java.util.HashMap;
import java.util.Map;
import java.util.function.BiConsumer;

public class Map4 {
    public static void main(String[] args) {
        Map<String, Integer> maps=new HashMap<>();
        maps.put("aa",3);
        maps.put("bb",99);
        maps.put("cc",100);
        maps.put("dd",110);
        System.out.println(maps);

//        maps.forEach(new BiConsumer<String, Integer>() {
//            @Override
//            public void accept(String key, Integer value) {
//                System.out.println(key+"====>"+value);
//            }
//        });

        maps.forEach(( key,  value)-> {
                System.out.println(key+"====>"+value);

        });

        
    }
}

=====================================================================

需求:80个学生从ABCD四个景点选一个,票数最高的景点得选,统计四个景点的票数

分析:因为一个景点对应一个票数,就像键值对,所以用Map集合存储统计结果,其中,遍历80个数据时,要看这个集合里是否存在,如果不存在就存进去并让数据=1,否则直接让数据+1即可

这里没有80个数据,所以让系统随机生成,拼接到一起形成字符串

package Map;

import java.util.HashMap;
import java.util.Map;
import java.util.Random;

public class t1 {
    public static void main(String[] args) {
        //1.生成80个数据
        String[] selects={"A","B","C","D"};
        StringBuilder sb=new StringBuilder();
        Random r=new Random();
        for (int i = 0; i < 80; i++) {
            sb.append(selects[r.nextInt(selects.length)]);
        }
        System.out.println(sb);

        //2.定义一个Map集合记录统计结果
        Map<Character,Integer> ss=new HashMap<>();
        //判断是否存在
        for (int i = 0; i < 80; i++) {
            //提取当前选择的字符
            char ch=sb.charAt(i);
            if(ss.containsKey(ch)){
                //如果存在键,加一
                ss.put(ch,ss.get(ch)+1);
            }else{
                //如果不存在,存入
                ss.put(ch,1);
            }
        }

        System.out.println(ss);
    }
}

=========================

补充:依赖hashcode和equals方法保证 键 的唯一

如果键要存储的是自定义对象,需要重写hashcode和equals方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值