重学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部分讲)

        数据结构:哈希表

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

idea项目maven下载依赖报错

报错&#xff1a; 1、Failure to find bad.robot:simple-excel:jar:1.0 in https://maven.aliyun.com/repository/public was cached in the local repository, resolution will not be reattempted until the update interval of aliyunmaven has elapsed or updates are forc…

小程序集arcgis地图显示自定义坐标的功能实现记录!(学习笔记)

最近再做一个新能源回收项目&#xff0c;项目中有个根据回收点坐标数据显示区域内回收点位置&#xff0c;点击图标直接导航到该位置&#xff0c;及分布的需求&#xff0c;研究了一下&#xff0c;实现效果如下&#xff0c;实现起来很简单&#xff0c;代码及效果 回收点位置及分…

Linux - 逻辑卷的创建和管理

1.逻辑卷LVM的创建 1.1 创建步骤 ①添加硬盘或者创建分区 ②创建物理卷 pvcreate ③创建卷组 vgcreate ④创建逻辑卷 lvcreate ⑤创建文件系统 mkfs.xfs/ect4/... ⑥创建挂…

随身wifi哪个牌子的最好用?网速最快的随身wifi推荐测评,随身wifi罗永浩推荐!

现在很多人都开始使用随身WiFi&#xff0c;因为互联网发达&#xff0c;看视频、刷抖音、看直播等等都需要流量&#xff0c;手机流量不够用&#xff0c;流量需求也很高。因此随身WiFi逐渐出现在人们的视野中&#xff0c;在众多品牌中一款名为格行的随身wifi被各明星和千万网红争…

Docker基础篇之本地镜像发布到阿里云

文章目录 1. 本地镜像发布到阿里云的流程2. 阿里云开发平台3. 将自己的本地镜像推送到阿里云 1. 本地镜像发布到阿里云的流程 阿里云ECS Docker生态如下图所示&#xff1a; 2. 阿里云开发平台 在控制台找到容器和镜像服务&#xff1a; 然后创建一个个人实例&#xff1a; 下面…

HW面试常见知识点2——研判分析(蓝队中级版)

&#x1f340;文章简介&#xff1a;又到了一年一度的HW时刻&#xff0c;本文写给新手想快速进阶HW蓝中的网安爱好者们&#xff0c; 通读熟练掌握本文面试定个蓝中还是没问题的&#xff01;大家也要灵活随机应变&#xff0c;不要太刻板的回答&#xff09; &#x1f341;个人主页…

江大白 | 万字长文,AIGC算法工程师的面试秘籍,推荐收藏!

本文来源公众号“江大白”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;万字长文&#xff0c;AIGC算法工程师的面试秘籍&#xff0c;推荐收藏&#xff01; 以下文章来源于微信公众号&#xff1a;WeThinkln 作者&#xff1a;Roc…

模块概述

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 模块的英文是Modules&#xff0c;可以认为是一盒&#xff08;箱&#xff09;主题积木&#xff0c;通过它可以拼出某一主题的东西。这与第6章介绍的函…

《互联网政务应用安全管理规定》电子邮件安全如何整改?

继上篇文章&#xff08;解读《互联网政务应用安全管理规定》网络和数据安全中的身份认证和审计合规&#xff09;之后&#xff0c;本篇文章继续解读第五章“电子邮件安全”&#xff0c;为党政机关事业单位提供电子邮件系统整改思路。 “电子邮件安全”内容从第三十一条到第三十…

机器学习的热门领域及应用趋势

机器学习的热门领域及应用趋势 近年来&#xff0c;机器学习&#xff08;Machine Learning, ML&#xff09;已经成为科技领域的热门话题&#xff0c;其在各个行业的应用越来越广泛和深入。本文将详细介绍当前机器学习的几个热门领域&#xff0c;以及人们在这些领域中使用的机器…

【数据结构】图论——Prim算法和Kruskal算法

目录 Prim算法和Kruskal算法Prim算法的原理数据结构算法步骤解释算法实现代码示例 Kruskal 算法Kruskal算法的原理和步骤Kruskal算法的实现数据结构并查集操作Kruskal算法 Prim算法和Kruskal算法 文章: 【数据结构】图论&#xff08;图的储存方式&#xff0c;图的遍历算法DFS和…

Ai绘画工具Stable Diffusion,手把手教你训练你的专属Lora模型,神级教程建议收藏!

哈喽&#xff0c;大家好&#xff0c;我是设计师阿威。 今天给大家带来的是Stable Diffusion训练Lora的教程&#xff0c;希望对大家有帮助。 一、硬件要求 我们知道Stable Diffusion WebUI对显卡要求比较高&#xff0c;同样Lora训练对显卡要求更高&#xff0c;所以要想训练一…

芝麻IP好用吗?来测试了!

作为老牌代理IP服务厂商&#xff0c;芝麻IP和青果网络代理IP都做的不错&#xff0c;市场上几乎可以是有口皆碑了&#xff0c;上次测试了青果网络的代理IP&#xff0c;效果表现得还挺不错&#xff0c;和他们自己宣传的以及客户对他们的评价大差不差。 总的来说&#xff0c;他们家…

Marin说PCB之Max parallel知多少?

今天是个阳光明媚&#xff0c;万里乌云的好日子。小编我一如既往地到家打开电脑准备看腾讯视频的五十公里桃花坞的第四季&#xff0c;在看到汪苏泷汪台说650电台要解散的时候小编我差点也哭了。650电台之于桃花坞就像乐队的鼓手一样&#xff0c;都是一个团队的灵感啊&#xff0…

视频号电商再升级,誓要分走抖音的蛋糕

2022年&#xff0c;马化腾对视频号的评价是&#xff1a;“微信最亮眼的业务就是视频号&#xff0c;基本上是全场的希望。”到了2024年&#xff0c;这个评价变成了&#xff1a;“视频号经过一年多的发展&#xff0c;的确不负众望。” 一年多的时间&#xff0c;从全村的希望&…

Docker 基础使用(3) 存储卷

文章目录 存储卷的含义存储卷的分类存储卷的作用存储卷的使用存储卷实际使用案例 ---- MySQL灾难恢复存储卷的局限 Docker 基础使用&#xff08;0&#xff09;基础认识 Docker 基础使用 (1) 使用流程概览 Docker 基础使用&#xff08;2&#xff09; 镜像与容器 Docker 基础使用…

MetaGPT:重塑自然语言编程,多智能体引领模型训练的革新探索

近年来&#xff0c;人工智能&#xff08;AI&#xff09;和自然语言处理&#xff08;NLP&#xff09;领域取得了重大进展&#xff0c;MetaGPT作为一个多智能体框架&#xff0c;正引领着这一领域的变革。本文将深入探讨MetaGPT的核心技术、实际应用及其对未来编程模式的影响。 引…

Python保存为json中文Unicode乱码解决json.dump()

保存为json中文Unicode乱码&#xff1a; 可以看到&#xff0c;中文字符没有乱码&#xff0c;只是出现了反斜杠&#xff0c;此时解决方法应考虑是否进行了二次序列化。 一、原因1 在dump时加入ensure_asciiFalse 即可解决&#xff0c;即json.dump(json_data, f, indent4, en…

antd-vue - - - - - a-select结合i18n使用(踩坑问题)

antd-vue - - - - - a-select结合i18n使用&#xff08;踩坑问题&#xff09; 1. 当前代码 & 效果2. 解决办法 1. 当前代码 & 效果 <a-selectv-model:value"formState.quickSwitching":options"quickSwitchingOptions"search"handleSearch…

Linux.用户

使用su - 切换用户 切换root时要输入密码&#xff0c;但是看不到 创建用户组 groupadd用户组名&#xff0c;用getent查看有哪些组 getent group 创建用户 在root身份中使用gentent passwd 可以查当前的用户信息 使用getent group查看有哪些组 使用chmod修改权限 快捷方法…