当前位置:   article > 正文

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

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

  1. import java.util.Properties;
  2. import java.util.Set;
  3. public class Demo255Properties {
  4. public static void main(String[] args) {
  5. Properties properties = new Properties();
  6. // Object setProperty(string key,string value) —> 存键值对
  7. properties.setProperty("username","root");
  8. properties.setProperty("password","1234");
  9. System.out.println(properties); // {password=1234, username=root}
  10. // String getProperty(String key) —> 根据key获取value的
  11. System.out.println(properties.getProperty("password")); // 1234
  12. // Set<string> stringPropertyNames() —> 获取所有的key,保存到set集合中,相当于keyset方法
  13. Set<String> set = properties.stringPropertyNames();
  14. for (String key : set) {
  15. System.out.println(properties.getProperty(key));
  16. // 1234
  17. // root
  18. }
  19. }
  20. }

二、集合嵌套

1.List嵌套List

需求:创建2个List集合,每个集合中分别存储一些字符串,将2个集合存储到第3个List集合中

  1. import java.util.ArrayList;
  2. public class Demo256ListInList {
  3. public static void main(String[] args) {
  4. // 需求:创建2个List集合,每个集合中分别存储一些字符串,将2个集合存储到第3个List集合中
  5. ArrayList<String> list1 = new ArrayList<>();
  6. list1.add("杨过");
  7. list1.add("小龙女");
  8. list1.add("尹志平");
  9. ArrayList<String> list2 = new ArrayList<>();
  10. list2.add("大大怪");
  11. list2.add("小小怪");
  12. list2.add("开心超人");
  13. list2.add("小心超人");
  14. // list中的元素是两个ArrayList<String>
  15. // 所以泛型也应该是ArrayList<String>
  16. ArrayList<ArrayList<String>> list3 = new ArrayList<>();
  17. list3.add(list1);
  18. list3.add(list2);
  19. System.out.println(list3);
  20. // 先遍历大集合,再遍历小集合,获取元素
  21. for (ArrayList<String> list : list3) {
  22. // 遍历二维数组
  23. for (String s : list) {
  24. System.out.println(s);
  25. }
  26. }
  27. }
  28. }

2.List嵌套Map

需求:1班级有第三名同学,学号和姓名分别为:1=张三,2=李四,3=王五,2班有三名同学,学号和姓名分别为:1=黄晓明,2=杨颖,3=刘德华,请将同学的信息以键值对的形式存储到2个Map集合中,在将2个Map集合存储到List集合中。

  1. import java.util.ArrayList;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. import java.util.Set;
  5. public class Demo257ListInMap {
  6. // 1班级有第三名同学,学号和姓名分别为:1=张三,2=李四,3=王五,
  7. // 2班有三名同学,学号和姓名分别为:1=黄晓明,2=杨颖,3=刘德华,
  8. // 请将同学的信息以键值对的形式存储到2个Map集合中,在将2个Map集合存储到List集合中。
  9. public static void main(String[] args) {
  10. // 1.创建两个map集合
  11. HashMap<Integer, String> map1 = new HashMap<>();
  12. map1.put(1, "张三");
  13. map1.put(2,"李四");
  14. map1.put(3,"王五");
  15. HashMap<Integer, String> map2 = new HashMap<>();
  16. map2.put(1,"黄晓明");
  17. map2.put(2,"杨颖");
  18. map2.put(3,"刘德华");
  19. // 2.创建存放map集合的list集合
  20. ArrayList<HashMap<Integer, String>> list = new ArrayList<>();
  21. list.add(map1);
  22. list.add(map2);
  23. // 3.先遍历list集合,再遍历map集合
  24. for (HashMap<Integer, String> map : list) {
  25. Set<Map.Entry<Integer, String>> set = map.entrySet();
  26. for (Map.Entry<Integer, String> entry : set) {
  27. System.out.println(entry.getKey() + " " + entry.getValue());
  28. }
  29. }
  30. }
  31. }

3.Map嵌套Map

JavaSE集合存储的是 学号 键,值 学生姓名

1 张三 2 李四

JaVaEE集合存储的是 学号 键,值 学生姓名

1 王五 2 赵六

  1. import java.util.HashMap;
  2. import java.util.Map;
  3. import java.util.Set;
  4. // JavaSE集合存储的是 学号 键,值 学生姓名
  5. // 1 张三
  6. // 2 李四
  7. // JaVaEE集合存储的是 学号 键,值 学生姓名
  8. // 1 王五
  9. // 2 赵六
  10. public class Demo258MapInMap {
  11. public static void main(String[] args) {
  12. HashMap<Integer,String> map1 = new HashMap<>();
  13. map1.put(1, "张三");
  14. map1.put(2,"李四");
  15. HashMap<Integer,String> map2 = new HashMap<>();
  16. map2.put(1,"王五");
  17. map2.put(2,"赵六");
  18. HashMap<String,HashMap<Integer,String>> map = new HashMap<>();
  19. map.put("javase",map1);
  20. map.put("javaee",map2);
  21. Set<Map.Entry<String, HashMap<Integer, String>>> set = map.entrySet();
  22. for (Map.Entry<String, HashMap<Integer, String>> entry:set) {
  23. HashMap<Integer, String> hashMap = entry.getValue();
  24. Set<Integer> set1 = hashMap.keySet();
  25. for (Integer key : set1) {
  26. System.out.println(key+"..."+hashMap.get(key));
  27. }
  28. }
  29. }
  30. }

三、集合下 总结

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

        数据结构:哈希表

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/684668
推荐阅读
相关标签
  

闽ICP备14008679号