Map接口常用的方法和遍历

Map接口常用的方法
put(K key, V value) 向Map集合中添加键值对
V get(Object key) 通过key获取value
void clear() 清空Map集合。
boolean containsKey(Object key) 判断Map中是否包含某个key,则返回 true 。
boolean containsValue(Object value) 判断Map中是否包含某个value,则返回 true 。
Set<Map.Entry<K,V>> entrySet() 返回此地图中包含的映射的Set视图。
boolean equals(Object o) 将指定的对象与此映射进行比较以获得相等性。
int hashCode() 返回此地图的哈希码值。
boolean isEmpty() 判空。
Set keySet() 获取Map集合中的所有key(所有的键是一个set集合)
V remove(Object key) 删除某个key
int size() 返回此地图中键值映射的数量/个数。
Collection values() 获取Map集合中的所有的value,返回一个collection
Set<Map.Entry<K,V>> entrySet() 将Map集合转换成Set集合
假设现在有一个Map集合,如下:

key1 value
map1集合对象

1 xiaowang
2 liming
3 laoli
4 zhangsan

Set set=map1.entrySet();
输出的set集合对象
1=xiaowang
2=liming
3=laoli
4=zhangsan
【注意:Map集合通过entrySet()方法转换成的这个Set集合,set集合中的元素类型是Map.Entry
Map.Entry和String一样,都是一种类型的名字,只不过:Map.Entry是静态内部类,是Map中的静态内部类】

复习一下内部类:

package Mapiiiiii;

import java.util.HashSet;
import java.util.Set;

public  class Mapsilent {
    //静态内部类
    private static class InnerClass{
        //静态方法
        public static void mi(){
            System.out.println("静态内部类中的静态方法正在执行");
        }
        //实例方法
        public void ni(){
            System.out.println("静态内部类的实例方法正在执行");
        }
    }

    public static void main(String[] args) {
        //类名叫做   Mapsilent.InnerClass
        Mapsilent.InnerClass.mi();
        Mapsilent.InnerClass ma=new Mapsilent.InnerClass();
        ma.ni();

        //给一个Set集合
        //该Set集合中存储的对象是Mapsilent.InnerClass类型
        Set<Mapsilent.InnerClass> set=new HashSet<>();
        //这个Set集合中存储的是字符串对象
        Set<String> set1=new HashSet<>();

        Set<MyMap.MyEntry<Integer,String>> set2=new HashSet<>();
    }


}
class MyMap{
    public static class MyEntry<K,V>{

    }
}

/*
静态内部类中的静态方法正在执行
静态内部类的实例方法正在执行

 */

开始啦!!!!!!

package Mapiiiiii;

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

public class MapTest01 {
    public static void main(String[] args) {
        //创建集合对象
        Map<Integer,String> map=new HashMap<>();
        //添加键值对
        map.put(1,"脆脆鲨");
        map.put(3,"小熊妮");
        map.put(2,"鸡腿");
        map.put(4,"白昼小熊");
        //通过key获取value
       String value=map.get(4);
        System.out.println(value);
        //获取键值对的数量
        System.out.println("键值对的数量为:"+map.size());
        //删除
        map.remove(2);
        System.out.println("键值对的数量为:"+map.size());
        //判断是否包含某个key
        //contains方法底层调用的是equals进行对比,所以自定义的类型需要重写equals方法
        //重写过的equals方法比较的是内容
        System.out.println(map.containsKey(4));
        //判断是否包含某个value
        System.out.println(map.containsValue("白昼小熊"));
        //获取所有的value
        Collection<String> values=map.values();
        for(String str:values){
            System.out.println(str);
        }

        //判空
        System.out.println(map.isEmpty());
        //清空
        map.clear();
        System.out.println(map.isEmpty());
        //判断是否包含某个key
        System.out.println(map.containsKey(4));



    }

}

在这里插入图片描述
Map集合的遍历:
第一种:获取所有的key,通过遍历key来遍历value
第二种:foreach遍历
第三种: Set<Map.Entry<K,V>> entrySet() 将Map集合转换成Set集合

package Mapiiiiii;

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

/*
Map集合的遍历:
     第一种:获取所有的key,通过遍历key来遍历value
     第二种:foreach遍历
     第三种:  Set<Map.Entry<K,V>> entrySet() 将Map集合转换成Set集合
 */
public class MapTest02 {
    public static void main(String[] args) {
        //创建集合对象
        Map<Integer,String> map=new HashMap<>();
        //添加键值对
        map.put(1,"脆脆鲨");
        map.put(3,"小熊妮");
        map.put(2,"鸡腿");
        map.put(4,"白昼小熊");
        Set<Integer> keys=map.keySet();
        //第一种:获取所有的key,通过遍历key来遍历value
        Iterator<Integer> it=keys.iterator();
        while(it.hasNext()){
            //取出其中一个key
            Integer key=it.next();
            //通过key获取value
            String value=map.get(key);
            System.out.println(key+"="+value);
        }
        System.out.println("------------");
        //第二种:foreach遍历
        for(Integer str:keys){
            System.out.println(str +"="+map.get(str));

        }
        System.out.println("------------");
        //第三种:  Set<Map.Entry<K,V>> entrySet() 将Map集合转换成Set集合
        //set集合中元素的类型为:Map.Entry
        Set<Map.Entry<Integer,String>>  set= map.entrySet();
        //遍历Set集合,每次取出一个Node
        //用迭代器遍历
        Iterator<Map.Entry<Integer,String>> it2=set.iterator();
        while(it2.hasNext()){
            Map.Entry<Integer,String> node= it2.next();
            /*Integer key=node.getKey();
            String value= node.getValue();
            System.out.println(key+"="+value);*/
            System.out.println(node);
        }
        System.out.println("========");
        //这种方式效率比较高,比较适合大数据量
        for(Map.Entry<Integer,String> node:set){
            //这两种都可以
           // System.out.println(node.getKey()+"="+node.getValue());
            System.out.println(node);

        }
    }
}

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小心!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值