JAVA初级(二十)集合框架之Map的基本使用和介绍

这次来介绍下集合框架的另外一个Map,也称为图


Map是什么?Map就是用来存储数据的。它和Collection不同的是它存储的数据是以键值对的形式存在,


其中键也叫做key,值是value.比如上图中. 1表示start,2表示stop.Map存储的数据就是这么个形式

Map怎么用?

首先Map是一个接口,因此要用它的话就得创建它的实现类
Map常用的实现类是HashMap和TreeMap

1,HashMap存储数据
用这种存储数据的类无非就是要会用它们进行数据的增删改查,这是基础操作

 Map map = new HashMap();
        map.put(1,"stop");//往map添加数据,左边是key,右边是value
        map.put(2,"start");
        Object o = map.get(1);//从map取出数据,根据key取出value-->这边取出的值就是stop
        map.remove(1);//从map删除数据,根据key删除数据.这边就把key为1的那一组键值对删除
        map.replace(2,"stop");//从map修改数据,根据key修改对应的值

这样一个map的增删改查就完成了
HashMap的基础使用步骤
1,创建一个HashMap对象
2,使用put(key,value)来存储数据
3,使用get(key)取出数据,根据key取出对应的值
4,map.remove(key)根据key删除数据
5,map.replace(key,value)根据key修改数据.
这样Map的基本增删改查就完成了

TreeMap也是同样的用法

Map的遍历

Map存储的数据是键值对类型的。这样的要如何遍历呢?
Map的遍历方式有3种,之后jdk8还新增了1种.这边就不说了
1,使用keySet()方法遍历key,在根据key遍历出对应的value

 public static void main(String[] args) {
        Map<Integer,String> map = new HashMap();
        map.put(1,"stop");
        map.put(2,"start");
        for (Integer key: map.keySet()) {
        //遍历key然后在根据key对应的遍历出value
            System.out.println("键:"+key+",值:"+map.get(key));
        }
    }

foreach里面的遍历体是map.keySet(),元素是key,类型和key一致.当然Object也可以

结果是:
键:1,值:stop
键:2,值:start

这个方法最简单,但是这样的遍历方式很少使用.因为效率问题。
2,使用entrySet()把键值对一起遍历出来,然后用getKey()和getValue()方法取出key,value

Map<Integer,String> map = new HashMap<>();
        map.put(1,"stop");
        map.put(2,"start");
        for (Map.Entry<Integer, String> entry : map.entrySet()) {
            //定义的Map.Entry里的泛型和定义的Map保持一致
            //使用entrySet()把键值对一起遍历出来,然后在用遍历出来的元素的getKey(),getValue()方法取出key,value
            System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
        }

这种遍历方法是把key,value按成对的形式遍历出来.foreach种遍历体是map.entrySet(),
元素类型是Map.Entry<Integer, String>这个类型记住.泛型和定义的Map保持一致。是什么就是什么,不能写Object来代替。除非定义的map泛型是Object.
entrySet()遍历是用的最多的一个Map遍历方式.也是最推荐使用的遍历方式

如果这个Map没有定义泛型,那就不能用这个方式遍历

Map map = new HashMap<>();
        map.put(1,"stop");
        map.put(2,"start");
        for (Object entry : map.entrySet()) {
        //这种情况你没办法直接取出key和value
    System.out.println(entry)
        }

所以对于集合框架的使用,要习惯的写上泛型,即便允许任意类型也写上Object

3,使用enrtySet()的Iterator遍历

 public static void main(String[] args) {
        Map<Integer,String> map = new HashMap<>();
        map.put(1, "stop");
        map.put(2, "start");
        Iterator<Map.Entry<Integer,String>> iterator = map.entrySet().iterator();
        while (iterator.hasNext()){
            Map.Entry<Integer, String> next = iterator.next();
            System.out.println("key="+next.getKey()+",value="+next.getValue());
        }
    }

解析一下,map.entrySet()方法实际上就是把Map的数据放到了一个Set<Map.Entry<K,V>>这个里面。所以就相当于是用Iterator遍历一个set
但是这个很少用.用起来还不如2方法方便

还有一个是使用map.value()方法遍历,但是这个只能遍历value不能遍历出key就不纳入其中之一了

总结:
1,Map是什么?
一个用来存数键值对的图
2,Map如何用?
最常用的是HashMap.如果需要让Map里的key按自定义排序.就使用TreeMap.但是这种场景还是很少的.
map的基本操作,增删改查.put,remove,replace,get四个方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值