思考:
List:线性表 Set:集合(不能有重复元素)(key) Map:字典(key, value)
ArrayList:用数组数组实现的线性表 LinkedList:用链表实现的线性表 HashSet:用哈希表实现set TreeSet:用二叉树组的树实现set
- (用 平衡二叉搜索树 找元素)
- (平衡算法:红黑树)
常见问题
【思考】: 他们都是list(线性表的结构) 他们实现不同 e:element
【一句话回答】: List是一个接口, ArrayList和LinkedList是2个实现, ArrayList是用数组实现的, LinkedList是用链表实现的。
什么时候才需要用Hashtable呢? 是么时候都不需要,它只是一个遗留的产物。 线程安全的情况下用ConcurrentHashMap; 线程不安全的情况下用HashMap; 如果不允许null,在HashMap外面包一下,或者使用第三方类库提供不允许null值的Map。
不是。 entry满天飞
什么时候需要用到Entry?
- 遍历Map里所有的值。遍历entrySet()更快。
- 实际使用中,Entry是必须要有的,但是不想过多依赖它,因此用entrySet()返回的东西还是Set。