List---列表---特点是线性,即存放的元素是有顺序的(有下标)。
* 掌握:ArrayList、LinkedList
* 1、在用法上两者的API完全相同;
* 2、调用以后的效果也是一样的。
* 区别:两个类在底层的实现上,ArrayList采用的是数组的方式进行存储;
* LinkedList采用的是双向链表的方式。
* 这种区别造成了两个类适用场景的不同:
* ArrayList适用于做大量查询动作或往尾部添加和删除数据;
* LinkedList适用于做大量的往中间添加和删除数据。
* 辨析:ArrayList\LinkedList\Vector
* Vector也是List分支,是ArrayList的兄弟类,底层实现也是数组,
* 不同于ArrayList的是它是线程安全的,效率低。
Map---映射---特点:以键值对的方式存放元素
* 掌握:HashMap的增删查改遍历的API。
* 补充掌握:Properties操作文件的方法
* 辨析:
* HashMap、Hashtable
* 1、两者都是Map分支的实现类,拥有相同的API;
* 2、Hashtable是线程安全的,效率低;HashMap是线程不安全的,效率高
* 3、Hashtable不允许使用null做键或值,但是HashMap是允许的(所有键中只能有一个为null)
Set---集,不能存放重复元素;非线性,即无序,没有下标。
* 掌握:HashSet
* 1、提供了增、删除的行为,删除也只能按对象删除
* 2、没有修改和查询指定元素的行为(因为没有下标)
* 3、不接受普通for循环。
* set集合如何判断两个元素重复:
* 1、它不是判断两个元素是否是同一个对象!
* 2、而是先调用两个对象的hashcode方法,判断是否返回同一个值;
* 然后再调用equals方法判断是否返回true;
* ----所以根据规范,重写equals方法,同时也要重写hashcode方法