Java-Map

仅为学习记录,仅供参考。


Java-Map
1.概念

Interface Map<K,V>:Map是一个泛型接口,K和V指的分别是key和value(键和值),可以是任何的引用数据类型。所以Map集合存储的是键-值对。

2.规则

每个Map对象不能包含重复的键(key),每个键可以映射到最多一个值(value)。

(key,value1)(key,value2)不会同时存储在Map对象中,如果向Map中添加了key值相等的键值对,那么后面添加的键值对的value将会替换掉之前的。例如:

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

public class MapMain {
    public static void main(String[] args) {
        Map<String,String> map=new HashMap<String, String>();
        /*
        * 添加元素:put()
        * */
        map.put("201701","猪小明");
        map.put("201702","闰土");
        //当key重复,后面的value会替换之前的value
        map.put("201703","王炸");
        map.put("201703","毛台");

        System.out.println(map);
    }
}

编译运行:

{201701=猪小明, 201703=毛台, 201702=闰土}

看上面的代码,Map是接口,不能直接创建对象,这里使用HashMap创建对象。put(key,value)方法是Map集合添加元素的方法。上面执行4个put()方法,但是运行结果显示集合中只有3个键值对,原因是执行map.put("201703","毛台")时发现map中已经有"201703"这个key,所以用"毛台"替换掉"王炸"。而且HashMap不保证元素存储的排列顺序。

3.使用

Map集合的常用方法有这些:

V put(K key,V value):添加元素
V remove(Object key):根据键删除键值对
void clear():清空集合
boolean containsKey(Object key):判断集合是否包含key
boolean containsValue(Object value):判断集合是否包含value
boolean isEmpty():判断集合是否为空
int size():返回集合大小,即键值对的个数。
V get(Object K):根据key返回value
Set<K> keySet():返回Map集合对象的key的集合,为Set类型
Collection<V> values():返回Map集合对象的value的集合,为Collection类型
Set<Map.Entry<K,V>> entrySet():返回所有键值对对象的集合

示例:

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

public class MapMain03 {
    public static void main(String[] args) {
        Map<String,String> map=new HashMap<String, String>();
        map.put("201701","猪小明");
        map.put("201702","妹大爷");
        map.put("201703","王炸");
        map.put("201704","米线儿");
        System.out.println(map);
        System.out.println("=====+=====+=====");

        System.out.println(map.size());
        System.out.println(map.isEmpty());
        System.out.println();

        System.out.println(map.containsKey("201701"));
        System.out.println(map.containsValue("孙悟空"));
        System.out.println();

        System.out.println(map.remove("201700000001"));
        System.out.println(map.remove("201704"));
        System.out.println(map);
        System.out.println();

        System.out.println(map.get("201701"));
        System.out.println(map.get("201700000001"));
        System.out.println();

//        map.clear();
        System.out.println("=====+=====+=====");



        Set<String> keySet = map.keySet();//获取key的集合,类型为Set
        System.out.println(keySet);

        Collection<String> valuesColl = map.values();//获取values的集合,类型为Collection
        System.out.println(valuesColl);

        Set<Map.Entry<String, String>> entries = map.entrySet();
        System.out.println(entries);//获取键值对对象的集合。
    }
}

编译运行:

{201704=米线儿, 201701=猪小明, 201703=王炸, 201702=妹大爷}
=====+=====+=====
4
false
=====+=====+=====
true
false
=====+=====+=====
null
米线儿
{201701=猪小明, 201703=王炸, 201702=妹大爷}
=====+=====+=====
猪小明
null
=====+=====+=====
[201701, 201703, 201702]
[猪小明, 王炸, 妹大爷]
[201701=猪小明, 201703=王炸, 201702=妹大爷]
4.遍历

遍历Map集合对象,即获取Map对象中的每一个key和value,一般有两种方式:

  1. 先利用keySet()方法获取key的集合,假设命名为keySet,再根据keySet中的每一个元素,利用get()方法获取到每一个key对应的value,这样可以获取到Map对象的每一个key和value。
  2. 利用entrySet()方法直接获取Map集合对象的键值对对象的集合,假设命名为entrySet,键值对对象中可以分别获取到key和value,这样,遍历这个entrySet集合,就可以获取到每一个key和value。

例如:

方式1遍历:

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

public class MapMain04 {
    public static void main(String[] args) {
        Map<String,String> map=new HashMap<String, String>();
        map.put("201701","猪小明");
        map.put("201702","妹大爷");
        map.put("201703","王炸");
        map.put("201704","米线儿");

        //方式1遍历
        Set<String> keySet = map.keySet();//获取key的集合
        for(String key: keySet){
            String value = map.get(key);//根据key获取value
            System.out.println(key+"-"+value);
        }

    }
}

编译运行:

201704-米线儿
201701-猪小明
201703-王炸
201702-妹大爷

方式2遍历:

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

public class MapMain04 {
    public static void main(String[] args) {
        Map<String,String> map=new HashMap<String, String>();
        map.put("201701","猪小明");
        map.put("201702","妹大爷");
        map.put("201703","王炸");
        map.put("201704","米线儿");


        /*
        * 方式2遍历
        * */
        Set<Map.Entry<String, String>> entries = map.entrySet();//获取键值对对象集合
        for (Map.Entry<String,String > e:entries){
            //利用键值对对象的方法getKey()和getValue()就可以获取key和value
            System.out.println(e.getKey()+"-"+e.getValue());
        }
    }
}

编译运行:

201704-米线儿
201701-猪小明
201703-王炸
201702-妹大爷

仅为学习记录,仅供参考。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值