Java 集合综述

发布于 2024-11-19 11:31:04 字数 2309 浏览 1 评论 0

容器继承关系

# 各个基本容器的继承关系
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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

0 文章
0 评论
22 人气
更多

推荐作者

一梦浮鱼

文章 0 评论 0

mb_Z9jVigFL

文章 0 评论 0

伴随着你

文章 0 评论 0

耳钉梦

文章 0 评论 0

18618447101

文章 0 评论 0

蜗牛

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文