JAVASE进阶day08(Map双列集合)

HashMap

1.HashMap基本使用

package com.lu.day08.map;import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class MapDome {public static void main(String[] args) {HashMap<String , String> map = new HashMap<>();//添加后者修改->如果key不存在则是添加,如果key已经存在就是修改map.put("曹雪芹","红楼梦");map.put("施耐庵","水浒传");map.put("吴承恩","西游记");map.put("杜甫","登高");System.out.println(map);//通过key获取值,如果key不存在则,获取到的值为nullSystem.out.println(map.get("吴承恩"));System.out.println(map.get("李白"));map.remove("吴承恩");System.out.println("--------------");map.put("杜甫","琵琶行");System.out.println(map);HashMap<Integer, String> map1 = new HashMap<>();map1.put(1,"one");map1.put(2,"two");map1.put(3,"three");map1.put(4,"four");System.out.println(map1.containsKey(7));System.out.println(map1.containsValue("one"));System.out.println(map1.isEmpty());System.out.println(map.size());//获取键集合Set<String> strings = map.keySet();for (String key : strings) {System.out.println(key+"-->"+map.get(key));}System.out.println("-----------------");//entrySet 返回一个存放键值对set集合//entry是一个map接口中的内部类->通过put(k,v)放置的键值对,实际上存到了entry对象中->对象由HashMap中的内部类中的node实现//实现其中有两个属性(key,value)Set<Map.Entry<String, String>> entries = map.entrySet();for (Map.Entry<String, String> entry : entries) {System.out.println(entry.getKey()+"-->"+entry.getValue());}System.out.println("-----------------");//函数式的遍历方法forEachmap.forEach((k,v)->{System.out.println(k+"-->"+v);});//只能key取value不能反过来}}

TreeMap基本使用

1.TreeMap基本使用

 

package com.lu.day08.map;import java.util.Comparator;
import java.util.TreeMap;public class TreeMapDemo {public static void main(String[] args) {//TreeMap只能对key排序Comparator<Integer> c = (o1,o2)->o2-o1;TreeMap<Integer, String> map = new TreeMap<>(c);map.put(1, "a");map.put(2, "b");map.put(3, "c");System.out.println(map);}
}

LinkedHashMap

package com.lu.day08.map;import java.util.LinkedHashMap;
import java.util.LinkedHashSet;public class LinkedHashMapDemo {public static void main(String[] args) {//保证存取有序LinkedHashMap<Integer, String> map = new LinkedHashMap<>();map.put(1, "张三");map.put(2, "李四");map.put(3, "王五");map.put(4, "赵六");map.forEach((k, v) -> {System.out.println(k + ":" + v);});LinkedHashSet<Integer> set = new LinkedHashSet<>();set.add(1);set.add(2);set.add(3);set.forEach(System.out::println);}
}

 集合嵌套

package com.lu.day08.map;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class Test {public static void main(String[] args) {HashMap<String, List<String>> map = new HashMap<>();ArrayList<String> xiaomi = new ArrayList<>();xiaomi.add("小米1");xiaomi.add("小米2");xiaomi.add("小米3");map.put("小米", xiaomi);ArrayList<Map<String,Double>> list = new ArrayList<>();HashMap<String, Double> clothMap = new HashMap<>();clothMap.put("耐克",2300.0);clothMap.put("贵人鸟",7800.0);clothMap.put("凡客",50.0);}
}

Collections

1.集合辅助工具类

package com.lu.day08.collections;import java.util.ArrayList;
import java.util.Collections;public class CollectionsDemo {public static void main(String[] args) {ArrayList<Integer> list = new ArrayList<>();list.add(1);list.add(5);list.add(2);list.add(4);list.add(3);System.out.println(list);// 反转Collections.reverse(list);System.out.println(list);// 排序Collections.sort(list);System.out.println(list);// 随机Collections.shuffle(list);System.out.println(list);}
}

可变参数

package com.lu.day08.collections;/*** 可变参数*/
public class VaryParam {public static void main(String[] args) {print(1,2,3,4,5,6,7,8,9);}public static void print(int... a){for (int j : a) {System.out.println(j);}}
}

不可变集合

 

package com.lu.day08.collections;import java.util.List;
import java.util.Map;
import java.util.Set;/*** jdk9新增不可变集合*/
public class Test {public static void main(String[] args) {//创建list不可变集合List<Integer> integers = List.of(1, 2, 3);integers.forEach(System.out::println);//创建set不可变集合Set<Integer> integers1 = Set.of(1, 2, 3);System.out.println(integers1);//创建map不可变集合Map<String, Integer> a = Map.of("A", 1, "B", 2, "C", 3);System.out.println(a);}
}

HashMap底层

 面试题

1.所有集合的底层分别是什么

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

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

相关文章

H264视频编码中Annex B 格式介绍

Annex B 格式是 H.264 (也称为 AVC) 视频编码标准中的一种数据表示格式&#xff0c;用于将视频数据从编码器传输到解码器。它主要用于流媒体传输和文件存储。 文章目录 Annex B 格式的定义Annex B 格式的主要特点Annex B 与其他格式的对比Annex B 格式示例将 H.264 数据从 MP4…

查询(q_proj)、键(k_proj)和值(v_proj)投影具体含义

查询(q_proj)、键(k_proj)和值(v_proj)投影&#xff0c;这些投影是自注意力机制的核心组件&#xff0c;特别是在Transformer架构中。 让我们通过一个简化的例子来说明&#xff1a; import numpy as np# 假设输入维度是4&#xff0c;注意力头数是2 input_dim 4 num_heads 2 …

每天一道Java面试题系列之--Spring如何解决循环依赖问题

面试题&#xff1a;Spring如何解决循环依赖问题&#xff1f; 问题背景&#xff1a; 在Spring框架中&#xff0c;循环依赖通常发生在单例&#xff08;Singleton&#xff09;作用域的bean之间。当两个或多个bean在它们的构造函数中相互引用时&#xff0c;Spring容器在创建这些b…

电脑32位和62位是什么意思

在现代计算机世界中&#xff0c;32位和64位是两个常见的术语&#xff0c;但许多用户可能不太清楚它们的确切含义以及它们之间的区别。本文将详细介绍32位和64位计算机的基本概念、如何查看您的计算机是32位还是64位&#xff0c;以及它们对用户的实际影响。 32位与64位的基本概…

算法之工程化内容(1)—— Linux常用命令

目录 1. cd 命令 2. pwd 查看当前工作目录路径 3. SSH远程登录 4. ln -s 软链相关 5. mkdir 新建空目录 6. cp 复制 7. chown 权限改写 8. 进程相关&#xff08;nohup/ ps/ kill&#xff09; 9. tar -czvf/ tar -xzvf&#xff0c;zip/ unzip解压缩文件 10. df/ du/ free 11. hi…

MySQL篇七:复合查询

文章目录 前言1. 基本查询回顾2. 多表查询3. 自连接4. 子查询4.1 单行子查询4.2 多行子查询4.3 多列子查询4.4 在from子句中使用子查询4.5 合并查询4.5.1 union4.5.2 union all 前言 前面我们讲解的mysql表的查询都是对一张表进行查询&#xff0c;在实际开发中这远远不够。 1.…

【高中数学/指数函数】比较a=0.6^0.9 b=0.6^1.5 c=1.5^0.6的大小

【问题】 比较a0.6^0.9 b0.6^1.5 c1.5^0.6的大小 【解答】 指数函数y0.6^x是减函数&#xff0c;因为0.9<1.5,所以0.6^0.9>0.6^1.5,即a>b; 指数函数y1.5^x是增函数&#xff0c;1.5^0.6>1.5^01>0.6^0.9,即c>a; 综上&#xff0c;得出c>a>b的结论。 …

【运维】docker批量删除临时镜像(两种方式)

docker批量删除Tag<none>的临时镜像 在开发的时候&#xff0c;需要经常发布开发包&#xff0c;在使用docker build构建镜像的时候&#xff0c;同一个版本经常会使用相同tag&#xff0c;频繁打包一段时间后&#xff0c;本地会出现很多Tag<none>的临时镜像&#xff…

【MySQL】MySQL中的字段类型和区别

文章目录 前言一、说明举例1. 数值类型2. 字符串类型3. 日期和时间类型 二、总结 前言 在设计数据库和创建表时&#xff0c;理解MySQL中的各种字段类型及其区别是非常重要的。每种类型都有其特定的用途和存储需求。在本文中&#xff0c;我们将详细讨论MySQL中的各种字段类型&a…

uniapp如何发送websocket请求

方法1&#xff1a; onLoad() {uni.connectSocket({url: ws://127.0.0.1:8000/ws/stat/realTimeStat/,success: (res) > {console.log(connect success, res);}});uni.onSocketOpen(function (res) {console.log(WebSocket连接已打开&#xff01;);uni.sendSocketMessage({d…

Xinstall揭秘:APP推广数据背后的真相,让你的营销更精准!

在这个移动互联网时代&#xff0c;APP如同雨后春笋般涌现&#xff0c;但如何在这片红海中脱颖而出&#xff0c;成为每一个开发者与运营者面临的共同难题。其中&#xff0c;APP推广统计作为衡量营销效果、优化推广策略的关键环节&#xff0c;更是不可忽视的一环。今天&#xff0…

[GDOUCTF 2023]Tea writeup

通过strings找到关键函数 int __fastcall main_0(int argc, const char **argv, const char **envp) {char *v3; // rdi__int64 i; // rcxchar v6; // [rsp20h] [rbp0h] BYREFint v7; // [rsp24h] [rbp4h]int v8; // [rsp44h] [rbp24h]int four_key[12]; // [rsp68h] [rbp48h]…

你知道滚筒式高速视觉检测机外观怎么“看”出产品质量吗?

点火线圈胶套是一种用于保护点火线圈绝缘部分的胶质套管。这种胶套通常由高温耐磨的橡胶或硅胶材料制成&#xff0c;具有良好的绝缘性能和耐高温性能。点火线圈胶套的作用是防止点火线圈与外部环境接触&#xff0c;防止受潮、灰尘或化学物质的侵蚀&#xff0c;同时起到绝缘和保…

python怎么调用cmd命令

关于python调用cmd命令&#xff1a; 1、python的OS模块 OS模块调用CMD命令有两种方式&#xff1a;os.popen()、os.system()都是用当前进程来调用。 OS.system是无法获取返回值的。当运行结束后接着往下面执行程序。用法如&#xff1a;OS.system("ipconfig"). OS.…

随身WiFi市场乱象横生,随身WiFi测评最好的格行随身WiFi如何引领变革?

在当今随身WiFi市场乱象频发、内卷严重的背景下&#xff0c;消费者对于产品的性能与商家是否会后台割韭菜依旧存疑&#xff0c;尤其是“随身WiFi到底卡不卡&#xff1f;”的问题&#xff0c;成为了广大消费者关注的重点。然而&#xff0c;在众多品牌中&#xff0c;格行随身WiFi…

【音频特征提取】傅里叶变换算法源码学习记录

目录 背景快速理解FFT&#xff08;快速傅里叶变换&#xff09;IFFT&#xff08;逆傅里叶变换&#xff09;STFT&#xff08;短时傅里叶变换&#xff09; 代码实现FFT源代码IFFT源代码FFT、IFFT自己实验STFT源代码STFT自己实验 总结 背景 最近用到了相关操作提取音频信号特征&am…

Vue3 根据相对路径加载vue组件

一、设置动态组件加载器 1、"DynamicFormLoader.vue" <template><div><component :is"formComponent" v-if"formComponent" /></div> </template><script setup> import { ref, watch } from vue; import …

如何测试扫地机器人的稳定性

测试扫地机器人的稳定性是一个综合性的过程&#xff0c;旨在确保机器人在各种环境和条件下都能稳定运行。以下是一些关键的测试步骤和方面&#xff1a; 清洁效果测试 目的&#xff1a;评估扫地机器人在不同地面和污渍类型上的清洁能力。 方法&#xff1a; 使用不同类型的地面&…

标签印刷检测,如何做到百分百准确?

印刷标签是一种用于标识、识别或包装产品的平面印刷制品。这些标签通常在纸张、塑料膜、金属箔等材料上印刷产品信息、条形码、图像或公司标识&#xff0c;以便于产品识别和管理。印刷标签有各种形状、尺寸和材质&#xff0c;可以根据具体需求进行定制设计。常见的印刷标签包括…

FlutterFlame游戏实践#15 | 生命游戏 - 演绎启动

theme: cyanosis 本文为稀土掘金技术社区首发签约文章&#xff0c;30天内禁止转载&#xff0c;30天后未获授权禁止转载&#xff0c;侵权必究&#xff01; Flutter\&Flame 游戏开发系列前言: 该系列是 [张风捷特烈] 的 Flame 游戏开发教程。Flutter 作为 全平台 的 原生级 渲…