Java#29(集合进阶2---双列集合)

news2024/11/27 12:28:40

目录

一.Map------------双列集合-----------一次添加一对元素,如: 小明 99岁

1.特点:

2.Map中常见的API

3.Map集合的遍历方式

4.HashMap

5.LinkedHashMap

6.TreeMap


一.Map------------双列集合-----------一次添加一对元素,如: 小明 99岁

1.特点:

(1)双列集合一次需要存一对数据, 分别是

(2)键不能重复, 但值可以重复

(3)键和值是一一对应的, 每一个键只能找到自己对应的值

(4)键 + 值这个整体我们称为键值对或者键值对对象, 在Java中叫做Entry对象

双列集合的体系结构

2.Map中常见的API

Map是双列集合的顶层接口,它的功能是全部双列集合都可以继承使用的
       方法名称                                                                  作用
V put(K key,V value)                                                  添加元素
V remove(object key)                                     根据键删除键值对元素
void clear()                                                      移除所有的键值对元素
boolean containsKey(object key)              判断集合是否包含指定的
boolean containsValue(obiect value)        判断集合是否包含指定的

boolean isEmpty()                                              判断集合是否为空
int size()                                              集合的长度,也就是集合中键值对的个数

代码示范:

{
    public static void main(String[] args) {
        Map<String,String> m = new HashMap<>();
        m.put("铅笔","2元");
        m.put("橡皮擦","2元");
        m.put("书包","50元");
        //1.m.put 键相同,会被覆盖,会返回被覆盖的值
        String value1 = m.put("铅笔","3元");
        System.out.println(value1);
        System.out.println(m);
        //2.m.remove
        m.remove("书包");
        System.out.println(m);
        //3.m.clear
        //m.clear();
        //System.out.println(m);
        //4.m.containsKey
        boolean b1 = m.containsKey("书包");
        System.out.println(b1);
        System.out.println(m);
        //5.m.containsValue
        boolean b2 = m.containsValue("50元");
        System.out.println(b2);
        System.out.println(m);
        //6.m.isEmpty
        boolean b3 = m.isEmpty();
        System.out.println(b3);
        System.out.println(m);
        //m.size
        System.out.println(m.size());
    }
}

结果展示: 

3.Map集合的遍历方式

(1)键找值

代码示范:

package MapDemo;


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

public class Test1 {
    public static void main(String[] args) {
        Map<String,String> m = new HashMap<>();

        m.put("铅笔","2元");
        m.put("橡皮擦","1元");
        m.put("书包","70元");

        //遍历
        Set<String> set = m.keySet();
        //增强for遍历
        for (String s : set) {
            String value = m.get(s);
            System.out.println(s+"="+value);
        }
        //迭代器遍历
        Iterator<String> it = set.iterator();
        while(it.hasNext()){
            String s1 = it.next();
            String value = m.get(s1);
            System.out.println(s1+"="+value);
        }
        //Lambda表达式遍历
        set.forEach(s -> {
            String value = m.get(s);
            System.out.println(s+"="+value);
        });

    }
}

结果展示:

 (2)通过键值对对象进行遍历

代码示范: 

package MapDemo;

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

public class Test2 {
    public static void main(String[] args) {
        Map<String,String> map = new HashMap<>();

        map.put("铅笔","2元");
        map.put("橡皮擦","1元");
        map.put("书包","60元");

        //entries是一个键值对对象
        Set<Map.Entry<String,String>> entries = map.entrySet();
        //第一个entry存储的是铅笔,2元
        for (Map.Entry<String, String> entry : entries) {
            String key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key+"="+value);
        }
    }
}

结果展示:

(3)Lambda表达式 

代码示范:

package MapDemo;

import java.util.HashMap;
import java.util.Map;
import java.util.function.BiConsumer;

public class Test3 {
    public static void main(String[] args) {
        Map<String,String> map = new HashMap<>();

        map.put("李白","君不见黄河之水天上来,奔流到海不复回");
        map.put("哥白尼","人的天职在勇于探索真理");
        map.put("培根","选择机会,就是节省时间");
        //完整
        map.forEach(new BiConsumer<String, String>() {
            @Override
            public void accept(String key, String value) {
                System.out.println(key+"="+value);
            }
        });
        System.out.println("------------------------------------");
        //简化
        map.forEach((key, value)-> System.out.println(key+"="+value));
    }
}

结果展示:

4.HashMap

HashMap是Map里面的一个实现类

直接使用Map里面的方法就可以了

特点由键决定: 无序, 不重复, 无索引

依赖hashCode方法和equals方法保证键的唯一

如果存储的是自定义对象, 需要重写hashCode和equals方法

如果存储的是自定义对象, 不需要重写hashCode和equals方法

5.LinkedHashMap

由键决定: 有序, 不重复, 无索引

有序指的是存储和取出元素的顺序一致

代码示范: 

package Demo;

import java.util.LinkedHashMap;

public class Test1 {
    public static void main(String[] args) {
        LinkedHashMap<String,Integer> lhm = new LinkedHashMap<>();
        lhm.put("asd",123);
        lhm.put("asd",234);
        lhm.put("abc",345);
        lhm.put("qwe",456);
        System.out.println(lhm);
    }
}

结果展示: 

6.TreeMap

由键决定特性: 不重复, 无索引, 可排序

可排序: 对键进行排序(默认从小到大进行排序, 也可以自己规定键的排序规则)

 

(自己规定排列顺序,让它从大到小排序)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/49861.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在嵌入式里面实现printf()类似的功能

学习C语言大多数都是从printf("hello world")开始的&#xff0c;对于printf的熟悉程度最高&#xff0c;在嵌入式编程中&#xff0c;实现printf函数有一种很标准的办法就是实现putch&#xff0c;绑定对应的串口输出&#xff0c;设置好波特率&#xff0c;使能串口就可以…

No module named ‘PyQt5.QtWebEngineWidgets‘kn-----已解决

1.情况说明 本人在学习PyQt5的时候遇到了 from PyQt5.QtWebEngineWidgets import * 报错的情况&#xff0c;原因就是ModuleNotFoundError: No module named PyQt5.QtWebEngineWidgets 没有PyQt5.QtWebEngineWidgets&#xff0c; 2.解决办法&#xff1a; 解决办法一&#xf…

最快最便捷的pytest使用allure测试报告

一、前言 最近通过群友了解到了allure这个报告&#xff0c;开始还不以为然&#xff0c;但还是逃不过真香定律。 经过试用之后&#xff0c;发现这个报告真的很好&#xff0c;很适合自动化测试结果的展示。下面说说我的探索历程吧。 选用的项目为Selenium自动化测试Pytest框架…

Day1使用Burpsuite抓包工具抓包,改变UA头使得手机和pc端界面互相转换

1.前期工作&#xff1a;安装Burpsuite工具这里网上有许多教程&#xff0c;大致步骤如下&#xff1a; 找到安装包然后解压缩&#xff0c;然后双击 安装jdk&#xff0c;然后就是配置环境变量&#xff0c;如果是默认jdk安装路径没有更改路径的话就是跟如下一样 配置如下&#xff…

跨平台开发方案的三个时代

跨平台开发从本质上讲是为了增加业务代码的复用率&#xff0c;减少因为要适配多个平台带来的工作量&#xff0c;从而降低开发成本。在提高业务专注度的同时&#xff0c;能够为用户提供一致的用户体验&#xff0c;实现“多快好省”的效果。 跨平台是跨哪些平台&#xff1f;怎么…

高视医疗在港交所招股:IPO募资要用于贷款,高铁塔为控股股东

11月30日&#xff0c;高视医疗&#xff08;HK:02407&#xff09;在港交所发布公告&#xff0c;拟全球发售1306.86万股股份&#xff0c;其中香港发售股份130.7万股&#xff0c;国际发售股份1176.16万股&#xff0c;另有15%超额配股权&#xff0c;于2022年11月30日至12月5日招股&…

Talk预告 | 亚马逊云科技上海人工智能研究院肖天骏:基于视频的自监督物体遮挡补全分割

本期为TechBeat人工智能社区第458期线上Talk&#xff01; 北京时间11月30日(周三)20:00&#xff0c;亚马逊云科技上海人工智能研究院资深应用科学家——肖天骏的Talk将准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “基于视频的自监督物体遮挡补全分割”…

请求和响应

目录1 请求对象1.1 请求对象介绍1.2 请求对象常用方法-获取各自路径1.3 请求对象常用方法-获取请求头信息1.4 请求对象常用方法-请求参数信息1.5 获取请求参数并封装对象1.5.1 手动封装方式1.5.2 反射封装方式1.5.3 工具类封装方式1.6 流对象获取请求信息1.7 中文乱码问题1.8 请…

可发生点击化学反应:1458576-00-5,Biotin-PEG4-alkyne,生物素-四聚乙二醇-炔

【中文名称】生物素-四聚乙二醇-炔&#xff0c;生物素-四聚乙二醇-丙炔基 【英文名称】 Biotin-PEG4-alkyne 【货号】Y-PE-2172 【CAS】1458576-00-5 【分子式】C21H35N3O6S 【分子量】457.58 【基团】alkyne 【纯度】95% 【规格】25mg&#xff0c;100mg&#xff0c;250mg 【是…

如何应对继承的双面性

如何应对继承的双面性 继承既强大又有破坏性&#xff0c;那怎么办呢&#xff1f; 1&#xff09;避免使用继承&#xff1b; 2&#xff09;正确使用继承。 我们先来看怎么避免继承&#xff0c;有三种方法&#xff1a; 使用final关键字&#xff1b; 优先使用组合而非继承&#…

11月30日:linux服务器安装以及部署项目

准备一个连接linux服务器的可视化工具&#xff0c;开始发车 推荐使用国产&#xff1a; finalshell 下载地址&#xff1a;FinalShell SSH工具,服务器管理,远程桌面加速软件,支持Windows,macOS,Linux,版本3.9.7,更新时间2022.10.26 - SSH工具 SSH客户端 xshell&#xff1a;安装…

Spring Cloud Gateway微服务网关快速入门

介绍 Spring Cloud Gateway 是 Spring 官方基于 Spring 5.0&#xff0c;Spring Boot 2.0 和 Project Reactor 等技术开发的网关&#xff0c;Spring Cloud Gateway 旨在为微服务架构提供一种简单而有效的统一的 API 路由管理方式。Spring Cloud Gateway 作为 Spring Cloud 生态…

Kamiya丨Kamiya艾美捷人乳铁蛋白ELISA说明书

Kamiya艾美捷人乳铁蛋白ELISA预期用途&#xff1a; 人乳铁蛋白ELISA是一种高度灵敏的双位点酶联免疫测定&#xff08;ELISA&#xff09;人类生物样品中乳铁蛋白的测定。仅供研究使用。不用于诊断程序。 引言 乳铁蛋白&#xff08;LF&#xff09;是一种具有抗菌活性的多功能铁…

运动“双十一”持续走热,缤跃酒店洞察市场需求,创新打造运动健康酒店!

2022年“双十一”购物促销活动刚刚结束&#xff0c;各大品牌陆续开始展示肌肉&#xff0c;在众多数据中运动健身领域相关数据不容忽视&#xff0c;居家健身器械等商品持续走热&#xff0c;户外运动设备销售量也保持热度。由此可见&#xff0c;在当下全民运动热潮下&#xff0c;…

uniapp开发微信小程序实现语音识别,使用微信同声传译插件,

第一步&#xff1a;在微信小程序管理后台&#xff1a;“设置”-》“第三方设置”-》“插件管理”中添加插件。 但是这个地方&#xff0c;没有搜索到插件&#xff0c;就到微信服务市场 搜索到以后添加到需要的小程序里面&#xff0c;然后返回管理中心查看&#xff0c;就可以看…

Css3 3D转换

特点&#xff1a; 近大远小物体后面遮挡不可见 三维坐标系&#xff1a; 三维坐标系其实就是指立体空间&#xff0c;立体空间是由3个轴共同组成的。 X轴&#xff1a;水平向右为正 Y轴&#xff1a;垂直向下为正 Z轴&#xff1a;垂直屏幕向外为正 3D位移和3D旋转&#xff1a…

曲柄压力机的离合器和制动系统设计

目 录 摘 要 I ABSTRACT II 第1章 绪论 1 1.1压力机发展的概况 1 1.2压力机工作原理 1 1.2.1压力机功能简介 1 1.2.2压力机的工作原理简介 3 1.3 压力机的分类 3 1.4 压力机的主要参数和型号 4 1.5本次设计压力机参数及内容 6 1.5.1主要技术参数 6 1.5.2设计内容 6 第二章 曲柄…

学妹居然叫我帮她P证件照自拍,结果发现.........

前因后果 事情是这样的 晚上我正在聚精会神写代码&#xff08;打游戏~&#xff09; 突然&#xff0c;收到学妹给我发来的消息 还有一张自拍照 而且是可以放在结婚证上的那种哦 原来是照片尺寸不合适 让我帮她修图。还要什么蓝底、红底各种背景的 效果 1、尺寸长宽调整为&…

有序数组转换为二叉查找树

问题描述 给定一个整数数组&#xff0c;其元素为先序排列&#xff0c;将其转换为高度平衡的二叉查找树。 示例 示例1 Input: nums [-10,-3,0,5,9] Output: [0,-3,9,-10,null,5] Explanation: [0,-10,5,null,-3,null,9] is also accepted: 示例2 Input: nums [1,3] Output: …

STM32实战总结:HAL之触摸屏

输入类设备简介 IO输入输出&#xff0c;是计算机系统中的一个概念。计算机的主要功能就是从外部获取数据然后进行计算加工得到目标数据并输出给外部&#xff08;计算机可以看成数据处理器&#xff09;。计算机和外部交互就是通过IO。每一台计算机都有个标准输入和标准输出。 常…