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创建
创建的四种方式