集合UML图:(看图说话比较好理解)
Collection:
Set接口:无序不可重复
HashSet/TreeSet
List接口:有序可重复
ArrayList:数组形式,多用查,少用增删
LinkList:双向链表,适合增删,少用查
Vector:线程安全,效率低
Queue接口:
ArrayQueue
Map:具有映射关系的集合
HashMap:
HashTable:线程安全 效率
List /Set/Map 的区别
HashSet 是如何保证不重复的
底层是基于HashMap实现的,set的add方法是map中的put方法
遍历table中的键和值,如果hash码值不同则认为是新元素,存储;
如果hash码值相同 则使用equals判断是否相等,等则存在不存;
如果hash码值相同,equals判断的不相同,则认为是不同元素,存储。
JDK7和JDK8 中 HashMap与CurrentHashMap区别
可以借鉴这篇很棒的文章: https://segmentfault.com/a