Java 集合综述
容器继承关系
# 各个基本容器的继承关系
Collection
|--List
|--LinkedList
|--ArrayList
|--Vector
|--Stack
|--Set
|--HashSet
# ----------
Map
|--Hashtable
|--HashMap
|--WeakHashMap
- java.util.Collection 下面的通用方法
方法 | 描述 |
---|---|
Boolean add(Object o) | 向集合中添加一个对象的引用 |
Boolean remove(Object o) | 从集合中删除一个对象的引用 |
Void clear() | 删除集合中的所有对象,即不再持有这些对象的引用 |
Boolean contains(Object o) | 判断在集合中是否持有特定对象的引用 |
Int size() | 返回集合中元素的数目 |
Boolean isEmpty() | 判断集合是否为空 |
Iterator iterator() | 返回一个 Iterator 对象,可用它来遍历集合中的元素 |
Boolean retainAll(Collection<?> c) | 保留集合中的指定内容 |
Object[] toArray() | 返回一个数组,该数组包含集合中的所有元素 |
Boolean equals(Object o) | 对象比较 |
Int hashCode() | 返回 hash 码 |
list Set Map 区别及适用场景
- List Set: 都是继承自 Collection 接口, Map 则不是
- List 特点:元素有放入顺序,元素可重复.Set 特点:元素无放入顺序,元素 不可重复 ,重复元素会覆盖掉,(注意:元素虽然无放入顺序,但是元素在 set 中的位置是有该元素的 HashCode 决定的,其位置其实是固定的,加入 Set 的 Object 必须定义
equals()
方法) - 另外 list 支持 for 循环,也就是通过下标来遍历,也可以用迭代器,但是 set 只能用迭代,因为他无序, 无法用下标 来取得想要的值.
- set 和 List 对比:
- set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变.
- List:和数组类似,List 可以动态增长,查找(通过 index) 元素效率高,插入删除元素效率低,因为会引起其他元素位置改变.
- map 适合储存键值对的数据
- 线程安全 集合类与非线程安全集合类
- LinkedList、ArrayList、HashSet 是非线程安全的,Vector 是线程安全的
- HashMap 是非线程安全的,HashTable 是线程安全的
- StringBuilder 是非线程安全的,StringBuffer 是线程安全的
Collections.synchronizedMap
: 获取一个线程安全的集合 实现了 Map 接口 实际上操作的还是我们传入的 HashMap 实例
FAQ
int 和 double 对象的比较
可以使用对应的包装类对对象进行排序,如 Integer.compare
或者 Double.compare
,参考 这里
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: Git-cli 文章教程知识点
下一篇: MyBatis 介绍和使用
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论