容器API
两个对象equal时,两个对象的hashcode相等
Set
没有顺序且不可以重复
HashSet
哈希表(数组+链表)
List
有顺序且可以重复(两个对象直接回想的equal,就算重复)
ArrayList
数组结构
LinkList
链表结构
Map
键值对
是否包含某个对象,也是是否equal
Collection中装的必须都是Object对象
当对象在Map中作为键使用,当做引用时,使用hashCode判断是否相等,hashCode效率更高
重写equal对象应该重写hashCode方法
Iterator(迭代器)
统一的遍历Collection中元素的方法(类似一个指针,指向元素的左边)
返回值1.5之后是泛型E,1.5之前是Object
增强for循环
Set
TreeSet用树实现的
List(会不断的改变容量大小)
常用算法
binarySearch为二分法查找(折半查找)
如何选择数据结构
Array是数组,内存空间是连续的,直接偏移,读很快,改需要把前面的数据复制成新的数组,
改完再复制回去,改的慢
Linked是链表,内存空间不连续,读很慢,改直接更改链表的指向,改的块
Hash基本不再使用了
Map
不能重复依然是比较equal,比较equal比较麻烦,一般比较hashcode比较方便
put返回的object为通过key复制到原value后,原value返回所以使用object