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

        数据结构:哈希表

  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值