JAVA基础(四十五)——集合之Map接口

一、目录

  • Map接口基本介绍
  • Map接口常用方法
  • Map接口遍历方式

二、Map接口基本介绍

针对JDK8中Map接口的特点

  1. Map与Collection并列存在。用于保存具有映射关系的数据:Key-Value。
  2. Map中的Key和Value可以是任何引用类型的数据,会封装到HashMap$Node对象中。
  3. Map中的Key不允许重复,原因和HashSet一样。并且如果加入相同的Key,那么Value值将被后加入的替换掉。
  4. Map中的Value值可以重复。
  5. Map的Key可以为null,value也可以为null。但是只能有一个key为null
  6. 常用String类作为Map的Key。
  7. Key和Value之间存在单向一对一关系,即通过指定的Key总能找到对应的Value。
  8. Map存放数据的
package com.javamap;

import java.util.HashMap;

public class JavaMap {
    public static void main(String[] args) {
        HashMap hashMap = new HashMap();

        hashMap.put("no1", "Lilei");
        hashMap.put("no2", "LiPing");
        hashMap.put(null, null);

        System.out.println(hashMap);
        System.out.println(hashMap.get(null));
    }
}


output:
{no2=LiPing, null=null, no1=Lilei}
null

三、Map接口常用方法

  1. put:添加。
  2. remove:根据键值删除映射关系。
  3. get:根据键值获取值。
  4. size:获取元素个数。
  5. isEmpty:判断个数是否为0。
  6. clear:清除。
  7. containsKey:查找键是否存在。
package com.javamap;

import java.util.HashMap;

public class JavaMap {
    public static void main(String[] args) {
        HashMap hashMap = new HashMap();

        hashMap.put("no1", "Lilei");
        hashMap.put("no2", "LiPing");
        hashMap.put(null, null);
        hashMap.put("no3", new Book("yyyy", 100));

        System.out.println(hashMap);
        System.out.println(hashMap.get(null));

        hashMap.remove(null);

        System.out.println(hashMap);

        System.out.println(hashMap.size());

        System.out.println(hashMap.isEmpty());

        System.out.println(hashMap.containsKey("no2"));

        hashMap.clear();
        System.out.println(hashMap);
    }
}

class Book{
    private String bookname;
    private double price;

    public Book(String bookname, double price) {
        this.bookname = bookname;
        this.price = price;
    }
}

output:
{no2=LiPing, null=null, no1=Lilei, no3=com.javamap.Book@1b6d3586}
null
{no2=LiPing, no1=Lilei, no3=com.javamap.Book@1b6d3586}
3
false
true
{}

四、Map接口遍历方式

先来看一下遍历的时候涉及到的方法:

  1. containsKey:查找键是否存在。
  2. keySet:获取所有的键。
  3. entrySet:获取所有的关系。
  4. values:获取所有的值。
  • 一、先取出所有的Key,再通过Key以增强for循环或者迭代器的方式取出对应的Value。

增强for循环:

package com.javamap;

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

public class JavaMapIter {
    public static void main(String[] args) {
        HashMap hashMap = new HashMap();

        hashMap.put("no1", "Lilei");
        hashMap.put("no2", "LiPing");
        hashMap.put("no3", "Zhang");
        hashMap.put("no4", "Zhao");

        Set set = hashMap.keySet();

        for (Object key : set) {
            System.out.println(key + " " + hashMap.get(key));
        }
    }
}

output:
no2 LiPing
no1 Lilei
no4 Zhao
no3 Zhang

迭代器:

Iterator iterator = set.iterator();
        while (iterator.hasNext()) {
            Object next = iterator.next();
            System.out.println(next + " " + hashMap.get(next));
        }
  • 二、如果不需要Key,仅仅需要Value。那么直接通过values()方法将所有Value取出,然后再用Collections的所有遍历方式都可。
 Collection values = hashMap.values();

        //增强for循环
        for (Object value : values) {
            System.out.println(value);
        }
        //迭代器
        Iterator iterator = values.iterator();
        while (iterator.hasNext()) {
            Object next = iterator.next();
            System.out.println(next);
        }
  • 三、通过EntrySet来获取Key-Value。

tips:
在获取到entrySet之后,需要将其转成Map.Entry,因为它提供了getkey()和getvalue()方法,这样就可以获取到Key
和Value了。

package com.javamap;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;

public class JavaMapIter {
    public static void main(String[] args) {
        HashMap hashMap = new HashMap();

        hashMap.put("no1", "Lilei");
        hashMap.put("no2", "LiPing");
        hashMap.put("no3", "Zhang");
        hashMap.put("no4", "Zhao");

       package com.javamap;

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

public class JavaMapIter {
    public static void main(String[] args) {
        HashMap hashMap = new HashMap();

        hashMap.put("no1", "Lilei");
        hashMap.put("no2", "LiPing");
        hashMap.put("no3", "Zhang");
        hashMap.put("no4", "Zhao");

        Set set = hashMap.entrySet();
        for (Object o : set) {
            Map.Entry oe = (Map.Entry) o;
            System.out.println(oe.getKey() + " " + oe.getValue());
        }
        


    }
}

    }
}

output:
no2 LiPing
no1 Lilei
no4 Zhao
no3 Zhang
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值