list:有下标,有序,可重复 实现类:ArrayList,LinkedList,Vector
set:无下标,无序,不可重复(利用HashCode和equals去重) 实现类:HashSet LinkedHashSet,SortedSet TreeSet
list默认长度及扩容机制
底层是数组
默认长度为0;当存入第一个数据时扩容到10,接下来每次扩容为1.5倍
Arraylist与linkedlist的区别
Arraylist是基于数组实现的,查询快(利用下标),增删满(数组是连续的,增删时要移动元素)
Linkedlist是基于链表实现的,查询慢 (需要遍历整个链表),增删快(链表将它们连接在一起,只需要修改相邻节点的指针)。
HashSet中hashcode与equals详解
在使用HashSet时,如果要将自定义对象作为元素存储在其中,则需要重写该对象的hashCode()和equals()方法。
hashCode()方法:用于确定元素的哈希值,用于在HashSet中确定元素的位置(哈希码值对数组取余,余数为要存元素位置的下标)。(元素地址值相同哈希码值一定相同,地址值不同哈希码值可能相同)
equals()方法用于比较两个元素是否相等。如果两个元素的hashCode()值相同,则会调用equals()方法来确定它们是否相等。相同则不存,不同则挂在该下标下边。