重学java 59.Properties属性集集合嵌套集合下总结
不要咀嚼小小悲观,而忘掉整个世界
—— 24.6.3
一、Properties集合(属性集)
1.概述
Properties 继承 于HashTable
2.特点
a、key唯一,value可重复
b、无序
c、无索引
d、线程安全
e、不能存null键,null值
f、Properties的key和value类型默认为String
3.数据结构:哈希表
4.特有方法
Object setProperty(string key,string value) —> 存键值对
String getProperty(String key) —> 根据key获取value的
Set<string> stringPropertyNames() —> 获取所有的key,保存到set集合中,相当于keyset方法
void load(Inputstream,instream) —> 将流中的数据加载到Properties集合中(IO部分)
import java.util.Properties; import java.util.Set;public class Demo255Properties {public static void main(String[] args) {Properties properties = new Properties();// Object setProperty(string key,string value) —> 存键值对properties.setProperty("username","root");properties.setProperty("password","1234");System.out.println(properties); // {password=1234, username=root}// String getProperty(String key) —> 根据key获取value的System.out.println(properties.getProperty("password")); // 1234// Set<string> stringPropertyNames() —> 获取所有的key,保存到set集合中,相当于keyset方法Set<String> set = properties.stringPropertyNames();for (String key : set) {System.out.println(properties.getProperty(key)); // 1234 // root}} }
二、集合嵌套
1.List嵌套List
需求:创建2个List集合,每个集合中分别存储一些字符串,将2个集合存储到第3个List集合中
import java.util.ArrayList;public class Demo256ListInList {public static void main(String[] args) { // 需求:创建2个List集合,每个集合中分别存储一些字符串,将2个集合存储到第3个List集合中ArrayList<String> list1 = new ArrayList<>();list1.add("杨过");list1.add("小龙女");list1.add("尹志平");ArrayList<String> list2 = new ArrayList<>();list2.add("大大怪");list2.add("小小怪");list2.add("开心超人");list2.add("小心超人");// list中的元素是两个ArrayList<String>// 所以泛型也应该是ArrayList<String>ArrayList<ArrayList<String>> list3 = new ArrayList<>();list3.add(list1);list3.add(list2);System.out.println(list3);// 先遍历大集合,再遍历小集合,获取元素for (ArrayList<String> list : list3) {// 遍历二维数组for (String s : list) {System.out.println(s);}}} }
2.List嵌套Map
需求:1班级有第三名同学,学号和姓名分别为:1=张三,2=李四,3=王五,2班有三名同学,学号和姓名分别为:1=黄晓明,2=杨颖,3=刘德华,请将同学的信息以键值对的形式存储到2个Map集合中,在将2个Map集合存储到List集合中。
import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.Set;public class Demo257ListInMap {// 1班级有第三名同学,学号和姓名分别为:1=张三,2=李四,3=王五,// 2班有三名同学,学号和姓名分别为:1=黄晓明,2=杨颖,3=刘德华,// 请将同学的信息以键值对的形式存储到2个Map集合中,在将2个Map集合存储到List集合中。public static void main(String[] args) {// 1.创建两个map集合HashMap<Integer, String> map1 = new HashMap<>();map1.put(1, "张三");map1.put(2,"李四");map1.put(3,"王五");HashMap<Integer, String> map2 = new HashMap<>();map2.put(1,"黄晓明");map2.put(2,"杨颖");map2.put(3,"刘德华");// 2.创建存放map集合的list集合ArrayList<HashMap<Integer, String>> list = new ArrayList<>();list.add(map1);list.add(map2);// 3.先遍历list集合,再遍历map集合for (HashMap<Integer, String> map : list) {Set<Map.Entry<Integer, String>> set = map.entrySet();for (Map.Entry<Integer, String> entry : set) {System.out.println(entry.getKey() + " " + entry.getValue());}}} }
3.Map嵌套Map
JavaSE集合存储的是 学号 键,值 学生姓名
1 张三 2 李四
JaVaEE集合存储的是 学号 键,值 学生姓名
1 王五 2 赵六
import java.util.HashMap; import java.util.Map; import java.util.Set;// JavaSE集合存储的是 学号 键,值 学生姓名 // 1 张三 // 2 李四 // JaVaEE集合存储的是 学号 键,值 学生姓名 // 1 王五 // 2 赵六 public class Demo258MapInMap {public static void main(String[] args) {HashMap<Integer,String> map1 = new HashMap<>();map1.put(1, "张三");map1.put(2,"李四");HashMap<Integer,String> map2 = new HashMap<>();map2.put(1,"王五");map2.put(2,"赵六");HashMap<String,HashMap<Integer,String>> map = new HashMap<>();map.put("javase",map1);map.put("javaee",map2);Set<Map.Entry<String, HashMap<Integer, String>>> set = map.entrySet();for (Map.Entry<String, HashMap<Integer, String>> entry:set) {HashMap<Integer, String> hashMap = entry.getValue();Set<Integer> set1 = hashMap.keySet();for (Integer key : set1) {System.out.println(key+"..."+hashMap.get(key));}}} }
三、集合下 总结
1.Map集合
概述
双列集合的顶级接口
实现类
HashMap
特点:
① key唯一、value可重复、key重复会发生value覆盖
② 无序
③ 无索引
④ 线程不安全
⑤ 可以存null键null值
数据结构:哈希表
方法:
① V put(K key,V value) -> 添加元素,返回的是被覆盖的value
② V remove(Object key )-> 根据key删除键值对,返回的是被删除的value
③ V get(Object key) -> 根据key获取value
④ boolean containsKey(Object key) -> 判断集合中是否包含指定的key
⑤ Collection<V>values() -> 获取集合中所有的value,转存到Collecton集合中
⑥ Set<K>keySet() -> 将Map中的key获取出来,转存到Set集合中
⑦ Set<Map.Entry<K,V>> entrySet() -> 获取Map集合中的键值对,转存到Set集合中
LinkedHashMap
特点:
① key唯一、value可重复、key重复会发生value覆盖
② 有序
③ 无索引
④ 线程不安全
⑤ 可以存null键null值
数据结构:哈希表+双向链表
用法:和HashMap一样
map的key去重复过程
和set一样,重写hashCode和equals方法
2.红黑树相关集合
TreeSet
特点
① 对元素进行排序
② 不能存null
③ 无索引
④ 线程不安全
⑤ 元素唯一
数据结构:红黑树
构造
TreeSet() -> 构造一个新的空 set,该 set 根据其元素的自然顺序进行排序 -> ASCII
TreeSet(Comparator<? super E>comparator)构造一个新的空 TreeSet,它根据指定比较器进行排序TreeMap
特点
① 对key进行排序
② 不能存null
③ 无索引
④ 线程不安全
⑤ 元素唯一
数据结构:红黑树
构造
TreeMap() -> 使用键的自然顺序构造一个新的、空的树映射 -> ASCII
TreeMap(Comparator<? super E>commparator)构造一个新的、空的树映射,该映射根据给定比较器进行排序
3.Hashtable和Vector
Hashtable
特点
① key唯一,value可重复
② 无序
③ 无索引
④ 线程安全
⑤ 不能存null键null值
和HashMap的区别
① 相同点:元素无序,无索引,key唯一
② 不同点:HashMap线程不安全,Hashtable线程安全,HashMap可以存储null键null值,Hashtable不能存储null键null值Vector
特点
① 元素有序
② 元素可重复
③ 有索引
④ 线程安全
数据结构:数组
原理
a.如果用空参构造创建对象,数组初始容量为10,如果超出范围,自动扩容2倍
b.如果用有参构造创建对象,如果超出了范围,自动扩容,扩的是老数组长度+指定的容量增强4.Properties属性集
特点
① key唯一,value可重复
② 无序
③ 无索引
④ 线程安全
⑤ 不能存null键null值
⑥ Properties的key和value类型默认为String
特有方法
① Object setProperty(string key, String value) -> 存键值对
② String getProperty(String key) -> 根据key获取value的
③ Set<String>stringPropertyNames() -> 获取所有的key,保存到set集合中,相当于keySet方法
④ void load(InputStream inStream) -> 将流中的数据加载到Properties集合中(IO部分讲)数据结构:哈希表
相关文章:
重学java 59.Properties属性集集合嵌套集合下总结
不要咀嚼小小悲观,而忘掉整个世界 —— 24.6.3 一、Properties集合(属性集) 1.概述 Properties 继承 于HashTable 2.特点 a、key唯一,value可重复 b、无序 c、无索引 d、线程安全 e、不能存null键,null值 f、Propertie…...
Kafka系列之高频面试题
基础 简介 特点: 高吞吐、低延迟:kafka每秒可以处理几十万条消息,延迟最低只有几毫秒,每个Topic可以分多个Partition,Consumer Group对Partition进行Consumer操作可扩展性:Kafka集群支持热扩展持久性、可…...
SIP通话分析
20240603 - 引言 分析SIP协议的时候,发现了几个问题。虽然说,从整体上来看这个SIP的通话流程也没麻烦,实际上从RFC的概述部分就已经基本上就已经了解了全貌。但在实际的场景中,很多字段起到的作用就不太一样了。 虽然一开始的时…...
【SVG 生成系列论文(九)】如何通过文本生成 svg logo?IconShop 模型推理代码详解
SVG 生成系列论文(一) 和 SVG 生成系列论文(二) 分别介绍了 StarVector 的大致背景和详细的模型细节。SVG 生成系列论文(三)和 SVG 生成系列论文(四)则分别介绍实验、数据集和数据增…...
有哪些兼职软件一天能赚几十元?盘点十个能长期做下去的挣钱软件
在当今这个信息泛滥的时代,众人纷纷寻求迅速致富的捷径。许多人在从事兼职或副业时,并不期望取得巨大的成就,只要每天能额外收入数十元,便已心满意足。 今天,我将带领大家深入探究,揭开那些隐藏在日常生活…...
ubuntu 22.04配置静态ip
ubuntu 22.04配置静态ip vim /etc/netplan/01-network-manager-all.yaml# Let NetworkManager manage all devices on this system network:renderer: NetworkManagerethernets:enp4s0f1:addresses:- 192.168.1.18/24dhcp4: falseroutes:- to: defaultvia: 192.168.1.1nameser…...
C++ 使用 nlohmann/json 库
C常用 json 库有: Jsoncpp boost ison Qt Json (不推荐使用) nlohman::json (推荐使用) 其中Qt中json解析的相关类只在qt中有用,为了避免以后不用qt无法解析json,建议使用nlohmann/json,适用于任何C框架。 1. 简介 nlohmann是一…...
【Java面试】六、Spring框架相关
文章目录 1、单例Bean不是线程安全的2、AOP3、Spring中事务的实现4、Spring事务失效的场景4.1 情况一:异常被捕获4.2 情况二:抛出检查异常4.3 注解加在非public方法上 5、Bean的生命周期6、Bean的循环引用7、Bean循环引用的解决:Spring三级缓…...
【GIC400】——PLIC,NVIC 和 GIC 中断对比
文章目录 PLIC,NVIC 和 GIC 中断对比中断向量表PLIC中断向量表中断使能中断服务函数NVIC中断向量表中断使能中断服务函数GIC中断向量表系列文章 【ARMv7-A】——异常与中断 【ARMv7-A】——异常中断处理概述...
17.Redis之主从复制
1.主从复制是怎么回事? 分布式系统, 涉及到一个非常关键的问题: 单点问题 单点问题:如果某个服务器程序, 只有一个节点(只搞一个物理服务器, 来部署这个服务器程序) 1.可用性问题,如果这个机器挂了,意味着服务就中断了~ 2.性能/支持的并发量也是比较有限…...
计算机类专业应该怎么选学校和方向?优先选这些!
👆点击关注 获取更多编程干货👆 高考季临近,不少有意向报考计算机专业的同学在为院校和细分专业的选择而苦恼,以下是一些建议,希望能帮到大家! 01 选校建议 在选择计算机科学(CS)…...
Amazon云计算AWS(二)
目录 三、简单存储服务S3(一)S3的基本概念和操作(二)S3的数据一致性模型(三)S3的安全措施 四、非关系型数据库服务SimpleDB和DynamoDB(一)非关系型数据库与传统关系数据库的比较&…...
实战
自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 实战一:大乐透号码生成器 使用Random模块模拟大乐透号码生成器。选号规则为:前区在1~35的范围内随机产生不重复的…...
【C++】vector模拟实现
🔥个人主页: Forcible Bug Maker 🔥专栏: STL || C 目录 前言🔥vector需要实现的接口函数🔥vector的模拟实现swap交换默认成员函数迭代器接口reserve和resizesize和capacityoperator[ ]下标获取push_back和…...
生成随机图片
package com.zhuguohui.app.lib.tools;/*** Created by zhuguohui* Date: 2024/6/1* Time: 13:39* Desc:获取随机图片*/ public class RandomImage {// static final String url "https://picsum.photos/%d/%d?random%d";static final String url "https://…...
回溯算法常见思路
回溯问题 回溯法,一般可以解决如下几种问题: 组合问题:N个数里面按一定规则找出k个数的集合切割问题:一个字符串按一定规则有几种切割方式子集问题:一个N个数的集合里有多少符合条件的子集排列问题:N个数…...
AR眼镜定制开发_在AR眼镜中实现ChatGPT功能
AR眼镜定制方案中,需要考虑到强大的算力、轻巧的设计和更长的续航时间等基本要求。然而,AR眼镜的设计方案不仅仅需要在硬件和显示技术方面取得突破,还要在用户体验方面有所进展。 过去,由于造价较高,AR眼镜的普及和商业…...
手写防抖debounce
手写防抖debounce 应用场景 当需要在事件频繁触发时,只执行最后一次操作,可以使用防抖函数来控制函数的执行频率,比如窗口resize事件和输入框input事件; 这段代码定义了一个名为 debounce 的函数,它接收两个参数:fn…...
anaconda pycharm jupter分别是
Anaconda Anaconda是一个面向数据科学的Python发行版,它包含了Python解释器、conda包管理器、以及大量的科学计算和数据分析库。Anaconda的主要功能是提供一个易于管理的环境,用于安装、运行和更新Python包,同时支持创建和切换不同的Python环…...
【JMeter接口自动化】第3讲 Jmeter语言及外观配置
Jmeter语言配置 方法一:暂时生效,下次打开JMeter还会恢复默认配置 Jmeter安装后,默认语言是英文,可以在“选项”——“选择语音”中更改 方法二,修改配置文件,永久生效 修改jmeter.properties文件 Jmete…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...


