集合
子接口比父接口提供了更多的功能
早期的Collection接口
实现原理和ArrayList相同,功能相同,都是长度可变的数组结构,很多情况下可以互用
主要区别:
Vector是早期JDK接口,ArrayList是替代Vector的新接口
Vector线程安全,效率低下;ArrayList重速度轻安全,线程非安全
长度需增长时,Vector默认增长一倍,ArrayList增长50%
Hashtable类
实现原理和HashMap相同,功能相同,底层都是哈希表结构,查询速度快,很多情况下可互用
区别:Hashtable是早期JDK提供,HashMap是新版JDK提供
Hashtable继承Dictionary类,HashMap实现Map接口
Hashtable线程安全,HashMap线程非安全
Hashtable不允许null值,HashMap允许
volataile+CAS无锁化操作
CopyOnWriteArrayList:写时复制
当我们往一个容器添加元素的时候,不直接往当前容器添加,二十先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素
添加完元素之后,再将原容器的引用指向新的容器,我们可以对容器进行并发的读,而不需要加锁,因为当前容器不会添加任何元素,所以CopyOnWrite也是一种读写分离的思想,读和写不同的容器
实现List和Map数据的转换,具体要求:
功能1:定义方法public void listToMap()将List中Student元素封装到Map中
1)使用·构造方法Student(int id,String name,int age,String sex)创建多个学生信息并加入List
2)遍历list,输出每个Student信息
3)将List中数据放入map,使用Student的id属性作为Key值,使用student对象信息作为value
4)遍历map ,输出每个Entry的key和value
功能2:定义方法public void mapToList()将map中student映射信息封装到List
1)创建实体类StudentEntry,可以存储Map中每个Entry的信息
2)使用构造方法Student(int id,String name,int age,String sex)创建多个学生信息并使用Student的id属性作为Key值,使用student对象信息作为value
3)创建List对象,每个元素类型时StudentEntry
4)将Map中每个Entry信息放入List对象
功能3:说明Comparable接口的作用,并通过分数来对学生进行排序