java学习(二)
文章目录
写在前面
今天是学习的第二天,上午帮老师点忙,下午又偷懒到五点,哎,没得自觉,哭。
今日学习内容
映射Map
- 特点
双列集合(存储的是键值对<key,value>
):key
不允许重复,value
允许重复 - 方法
- 添加元素(若
key
不重复,返回null
;若key
重复,先用新值替换旧值,然后返回被替换的值value
):public V put(K key, V value);
- 通过指定的键移除键值对元素(若
key
存在,则返回它对应的value
;否则,返回null
)public V remove(Object key);
- 通过指定的键获取值(若
key
存在,则返回对应的值;否则,返回null
):public V get(Object key);
- 判断集合中是否包含指定的键:
public boolean containsKey(K key);
- 获取集合中所有的键,用于遍历(迭代器/增强
for
循环):Set<T> set = map.keySet();
- 添加元素(若
-------------------------------------------------华丽分割线–2020-05-26 19:26-----------------------------------------------
2.6. 方法
获取集合中所有的键值对:Set<Map.Entry<K,V>> entrySet();
Map
接口中含有内部接口Entry
,当Map
对象一创建,那么就会在Map
集合中创建个Entry
对象,来记录键值对;Entry
获取键值对的方法:
1. K getKey();
获取Entry
的键
2. V getValue();
获取Entry
的值
HashMap
- 特点
- 无序集合(存储的顺序可能与读取的顺序不一致)
- 底层是哈希表—查询很快
- 键值可以为空
- 存储自定义类型
因为key
不允许重复,所以要重写hashCode();
和equals();
,保证key
唯一
LinkedHashMap
- 特点
- 有序集合
- 底层是哈希表+链表—查询很快
- 键值可以为空
HashTable
- 特点(
jdk1.0+
)- 键和值都不允许为空
- 实现为同步—速度慢
- 逐渐被
HashMap
取代
集合添加元素新特性
-
List/Set/Map
可以调用静态方法of(E...e)
一次性添加多个元素 - 前提
集合中存储的元素个数已经确定,不再改变 - 注意
- 只有
List/Set/Map
接口才可以调用of()
方法 -
of()
方法的返回值是一个不可改变的数组,不能使用add()/put()
方法 -
Set/Map
接口调用of()
方法时不能有重复值,否则会抛出异常
- 只有
String字符串遍历
-
String
类的toCharArray()
方法返回字符数组; -
String
类的length()
和charAt(索引)
遍历字符串
多线程
并发 VS 并行
- 并发
两个或多个事件在同一时间段内发生(交替执行) - 并行
两个或多个事件在同一时刻发生(同时执行)
进程 VS 线程
- 进程
在内存中运行的应用程序 - 线程
进程的一个执行单元,一个进程可以有多个线程
多线程的好处
- 效率高
- 多个线程之间互不干扰
线程调度
- 分时调度
所有线程轮流占用CPU
的使用权 - 抢占式调度
优先让优先级高的线程使用CPU
,优先级相同的线程,随机选择CPU
在多个线程之间告高速切换
主线程
执行主方法(main()
)的线程
单线程
从main()
方法开始,从上到下依次执行
多线程
- 原理
方法在栈内存中;对象在堆内存中;start()
每次调用都会开辟另一新栈空间,执行run()
方法 - 创建多线程方式一
- 步骤:
- 创建
Thread
子类 - 在子类中重写
run()
方法,设置线程任务 - 创建
Thread
子类对象 - 调用
start()
开启新线程,执行run()
方法
- 创建
- 注意
- 两个线程并发运行(
main
线程和新线程) - 多次启动一个线程是非法的,当线程已经结束,就不能重新启动了
- 两个线程并发运行(
- 步骤:
- 创建线程方式二
…待补充 - 获取线程名称(
run()
中调用输出)- 使用
Thread
类的getName()
- 获取正在执行的线程
static Thread currentThread()
,然后调用getName()
- 使用
- 设置线程名称
void setName(String name);
- 用带参数的构造方法创建对象,调用父类的构造方法,让父类给子类设置线程名称
写在最后
线程明天一定学完,加油,冲鸭!!