Map接口
1.Map可以根据键来提取对应的值
2.Map的键不允许重复,如果重复,对应的值会被覆盖
3.Map存放的都是无序的数据
4.Map的初始容量是16,默认的加载因子是0.75
HashMap
HashMap底层是一个Entry[ ]数组
1.HashSet中元素没有顺序,且不允许重复
2.HashSet允许存null值,但也不允许重复
1.Map中存放的都是无序的数据
Map中的key不可以重复,如果重复,此key对应的Value会被覆盖
2.Map中的数据要符合映射规则,一定要注意同时制定K 和V 的数据类型,至于这个K和V要制定成什么类型的数据,取决于具体需求
对map集合进行遍历/迭代
方式一
* 遍历map中的数据,但是map本身没有迭代器,需要转换成set集合
Set :把集合中的所有Key存到set集合中 keySet()
方式二
* 遍历map数据,把map转成set集合,是把map中的一堆Key Value作为一个Entry整体放入Set
一对K V 是一个Entry
线程
①当我们调用start()启动线程时,虚拟机会自动调用run()的业务
②测试结果
线程有随机性。执行的结果是不可控的,因为这是CPU在调度的我们无法控制
③父类实现是我们不需要的,我们有自己的业务
如果只是调用两个线程的run(),那么会先执行完一个线程,在执行理你另一个线程,不会有多线程抢占资源的效果,所以我们真的能通过run()来执行多线程任务吗?
* run()与start()本质上的区别,run()只能当做一个顺序执行的单线程普通方法,并没有多线程抢占的效果,所以如果想以多线程的效果干活,必须调用start(),才能真正的启动线程