java18天map和线程

Map

作用 存储一组数据类型相同的数据

特点

1,长度可变

2,存储的数据是使用键值对的方式进行存储 键值对: 键:Key(K) 值:Value(V

3,key值不得重复,

体系

Map

注意key不能重复 如果Map中已经存在该key,那么本次存储的值将会替换原有的值

        HashMap

                        K的数据结构:红黑树(二叉树)+哈希表

                        特点: 线程不安全的 JDK1.2 允许null作为键或值                        

        HashTable

                        K的数据结构 红黑树 + 哈希表

                        特点 线程安全 JDK1.0 不允许null作为键或值        

        TreeMap

                        K的数据结构 红黑树 +自定义比较

                        注意

                                key对应的数据类型要么拥有比较性,要么在创建TreeMap时指定比较器

        Properties

                        注意:后期在配置文件读写中使用,其本质就是一个Map,所有拿到该对象后,Map对象如何操作他就 如何操作

Map提供的方法

        V put(K k,V v):添加一个键值对

                注意: 如果本次添加的键值对中键不在当前map中存在,返回值为null 如果本次添加的键值对中键在当前map中存在,返回值为key原来对应的Value 如果本次添加的键值对中键在当前map中存在,会替换原有的值

         void putAll(Map m):添加多个键值对

         V remove(Object key):根据key删除对应的键值对象

                注意: 1,返回值为被删除键值对中的值

                        2,如果删除的key在map中不存在,则删除失败,返回值为null

        boolean remove(Object key, Object value):根据key与value删除对应的键值

                        注意: 1,要求key与value必须同时与map中的某一个键值对象相同,才可以删除

                                2,返回值为是否删除成功

        void clear():清空

        V put(K k,V v):修改一个键值对 注意:key在map存在就是修改,不存在就是添加

        int size();查询map中键值对的个数(map的长度)

        boolean containsKey(Object key):判断当前map是否存在该key

        boolean containsValue(Object value):判断当前map是否存在该value

       Set<Entry<String, String>> set = map.entrySet();
        System.out.println(set);获取当前map中所有键值对的集合

        Entry:键值对

        getKey():获取该键值的key

        getVlue():获取该键值的Value

        V get(Object key):通过key获取对应的value

        V getOrDefault(Object key, V defaultValue):通过key获取对应的value

String string=  map.getOrDefault("yu", "少时诵诗书");
    System.out.println(string);

                key:键 defaultValue:默认值 注意:如果键不存在,那么返回值为默认值,如果键存在,返回值键对应的值

        boolean isEmpty():判断当前map是否为空

        Set keySet():获取字典中所有key的集合

        Collection values():获取字典中所有值的集合

Set<String> set1 = map.keySet();
    System.out.println(set1);
    Collection<String> values = map.values();
    System.out.println(values);

        注意:不能使用foreach直接遍历map

//不能直接遍历map
    for (String string2 : values) {
        for (String string3 : set1) {
            if (map.get(string3).equals(string2)) {
                System.out.println(string2+"ddd"+string3);
            }    
        }

如下图示

TreeMap

要求:key对应的数据类型要么拥有比较性,要么在创建TreeMap时指定比较器 一般来说: 不会使用自定义的类对象作为Key 八个基本数据类型的包装类与String都实现了Compareble接口

 Properties

作用:可以读取文件中的内容

        方法: void load(InputStream inStream):加载文件

         void store(OutputStream out, String comments):提交内

Map怎么用它就怎么用

输入如图

 查看如图

线程

进程:一个正在进行的程序 如

        1,将Java文件编译为class文件         

        2,在内存中开辟一个运行空间

         3,运行class文件 线程:一个执行路径

        注意: 1,一个进程自带一个线程,该线程成主线程

                2,一个进程中可以有多个线程,称为多线程

                 3,多个线程在宏观角度是同时进行的,多个线程在微观角度是抢夺CPU执行权,切换执行

                 4,线程分为前台线程与守护线程(后台线程), 如果一个进程中所有的前台线程执行完毕后,那么不管是否有守护线程在执行,那么该进程都会 被结束 如果一个进程中有前台线程存活,那么进程将不会被销毁.JVM也无法回收该进程

                 5,线程已经开启不受控制

                6,一个线程大约占1MB的运行内存

        子线程:进程中除了主线程以外,其余的线程都是子线程.

         同步:同时只能有一个线程操作 线程安全

         异步:同时可以有多个线程操作 线程不安全

线程的组成

        1,CPU时间片(线程获取到执行权后可以执行的时间)

        2,内存 每一个线程都有自己的栈内存 多个线程共享一个堆内存

         3,执行逻辑(run方法中编写的代码)

线程的使用

1创建

        创建的四种方式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值