一些Map的总结

暑假看了些c++的STL库讲解,里面有些关于集合相关的容器vector,map,list等
现在学了JAVA,对于集合的运用的代码实现还是有些差别的,印象最深的是第一次用JAVA 的map写一个大模拟题,编译器在我用MAP的地方全飘红
我这才发现原来JAVA里全是对象,新建MAP还要NEW一下。总之,经历了一小段时间的学习,对于集合之类的容器理解的还不够透彻
‘不管怎样,先总结一下吧’,总之就是怀着这样的念头。
Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键对象和一个值对象。其中,键对象不允许重复,而值对象可以重复,并且值对象还可以是 Map 类型的,就像数组中的元素还可以是数组一样。

Map 接口主要有两个实现类:HashMap 类和 TreeMap 类。其中,HashMap 类按哈希算法来存取键对象,而 TreeMap 类可以对键对象进行排序。

Map 接口中提供的常用方法

V get(Object key)返回 Map 集合中指定键对象所对应的值。V 表示值的数据类型

V put(K key, V value)向 Map 集合中添加键-值对,返回 key 以前对应的 value,如果没有, 则返回 null

V remove(Object key)从 Map 集合中删除 key 对应的键-值对,返回 key 对应的 value,如果没有,则返回null

Set entrySet()返回 Map 集合中所有键-值对的 Set 集合,此 Set 集合中元素的数据类型为 Map.Entry

Set keySet()返回 Map 集合中所有键对象的 Set 集合 

通过迭代器来遍历MAP 也会给我们带来很多方便之处

import java.util.*;
public class Main {
    public static void main(String[] args) {
        HashMap users = new HashMap();
        Scanner input = new Scanner(System.in);
        System.out.println("请输入战斗机体数量");
        int n=input.nextInt();
        for(int i=0;i<n;i++){
            System.out.println("请输入第"+(i+1)+"机体编号");
            int stunum=input.nextInt();
            System.out.println("请输入第"+(i+1)+"机体型号");
            String name=input.next();
            users.put(stunum,name);
        }
        System.out.println("******** 学生列表 ********");
        Iterator it = users.keySet().iterator();//迭代器
        while (it.hasNext()) {// 遍历 Map
            Object key = it.next();
            Object val = users.get(key);
            System.out.println("编号:" + key + ",型号:" + val);
        }

        System.out.println("请输入要删除的学号:");
        int num = input.nextInt();
        if (users.containsKey(num) ){// 判断是否包含指定键
            users.remove(num);} // 如果包含就删除
            else {
                System.out.println("该机体不存在!");
            }
            System.out.println("******** 机体列表 ********");
            it = users.keySet().iterator();
            while (it.hasNext()) {
                Object key = it.next();
                Object val = users.get(key);
                System.out.println("编号:" + key + ",型号:" + val);
            }
        }
    }

测试数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值