您的位置:首页 > 教育 > 培训 > 重学java 59.Properties属性集集合嵌套集合下总结

重学java 59.Properties属性集集合嵌套集合下总结

2024/10/31 9:51:08 来源:https://blog.csdn.net/m0_73983707/article/details/139423570  浏览:    关键词:重学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部分讲)

        数据结构:哈希表

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com