当前位置: 首页 > news >正文

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

相关文章:

  • Python+审计实务与案例分析库 毕业设计-附源码211526
  • ES6--》对象扩展方法
  • 安卓在任意位置打开drawerLayout
  • 对一个即将上线的网站,如何做一个较完整的Web应用/网站测试?
  • 新授粉方式的花授粉算法-附代码
  • 毕业设计之基于springboot+uniapp的租房小程序
  • 一种改进的混合阿奎拉鹰和哈里斯鹰优化算法
  • ubuntu16 虚拟机单盘扩容
  • 几个简单的JavaScript面试题
  • 和月薪3W的聊过后,才知道自己一直在打杂...
  • Elasticsearch 8.X 路径检索的企业级玩法
  • 为什么不试试神奇的3407呢?
  • 达梦数据库中序列(SEQUENCE)的用法
  • 代理工具SPP的使用
  • lua字符串相关方法,如截取中文字符串
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 「译」Node.js Streams 基础
  • CSS盒模型深入
  • DOM的那些事
  • IDEA 插件开发入门教程
  • Linux中的硬链接与软链接
  • Nodejs和JavaWeb协助开发
  • 程序员最讨厌的9句话,你可有补充?
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 解析带emoji和链接的聊天系统消息
  • 漂亮刷新控件-iOS
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 通信类
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 阿里云重庆大学大数据训练营落地分享
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • #、%和$符号在OGNL表达式中经常出现
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (七)理解angular中的module和injector,即依赖注入
  • (三) diretfbrc详解
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .“空心村”成因分析及解决对策122344
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET 使用配置文件
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .net知识和学习方法系列(二十一)CLR-枚举
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...
  • @Data注解的作用
  • [Android Pro] listView和GridView的item设置的高度和宽度不起作用
  • [BJDCTF2020]The mystery of ip
  • [BUG]Datax写入数据到psql报不能序列化特殊字符
  • [BZOJ]4817: [Sdoi2017]树点涂色
  • [C# 网络编程系列]专题六:UDP编程