Java容器深度总结:Java容器整体结构

趁阳光正好,趁微风不燥,趁现在的双手还能拥抱彼此,趁我们还能呼吸,去见你想见的人,做你想做的事。

1.继承关系

容器主要包含Collection和Map两种类型,Collection存储着对象的集合,而Map存储着键值对(两个对象)的映射关系。

容器类框架图

在这里插入图片描述

  • 虚线方框为接口,实线方框为类。
  • 虚线箭头为实现,实线箭头为继承。

Tip:

依赖关系:是一种使用关系,它是对象之间耦合度最弱的一种关联方式,是临时性的关联。A 类依赖于B 类主要有三种形式:

  • A 类是 B 类方法的局部变量;
  • A 类是 B 类方法的参数;
  • A 类对B 类静态方法的调用来访问 B类中的某些方法来完成一些职责。
2.Collection
2.1 List

List以线性方式存储元素,集合中可以存放重复对象,元素有序。常用实现类:

  • ArrayList:基于动态数组实现,支持随机访问,随机访问元素快,增删元素慢。
  • Vector:Vector与ArrayList相似。但Vector的方法是线程安全的,而ArrayList的方法不是,由于线程的同步必然要影响性能,因此ArrayList的性能比Vector好。
  • LinkedList:基于双向链表实现,只能顺序访问,插入、删除元素快。
  • Stack:栈,继承Vector,特点是先进后出(FILO)。
2.2 Set

Set不保存重复的元素。Set与Collection有完全一样的接口。Set接口不保证维护元素的次序。最常用实现类:

  • TreeSet:基于红黑树实现,支持有序性操作,TreeSet查找的时间复杂度为 O(logN)。

  • HashSet:基于哈希表实现,支持快速查找,HashSet查找的时间复杂度为 O(1),但不支持有序性操作。

  • LinkedHashSet:具有 HashSet 的查找效率,并且内部使用双向链表维护元素的插入顺序。

2.3 Queue

JDK1.5在Collection接口下新增了Queue接口,用以支持队列的常见操作。Queue:队列,先进先出(FIFO)。

  • PriortyQueue:基于堆结构实现,可以用它来实现优先队列。
3.Map
  • TreeMap:基于红黑树实现。

  • HashMap:基于哈希表实现。

  • HashTable:和 HashMap 类似,但它是线程安全的,这意味着同一时刻多个线程同时写入 HashTable 不会导致数据不一致。它是遗留类,不应该去使用它,而是使用 ConcurrentHashMap 来支持线程安全,ConcurrentHashMap 的效率会更高,因为 ConcurrentHashMap 引入了分段锁。

  • LinkedHashMap:是HashMap的一个子类,使用双向链表来维护元素的顺序。

4.迭代器
  • Iterator迭代器:Iterator迭代器是一个用来遍历并选择序列中的对象。只能单向移动。

  • ListIterator迭代器:继承自Iterator。只能用于各种List类的访问。可以双向移动。

5.工具类
  • Arrays:提供各种静态方法,方便对数组进行操作。
  • Collections:提供各种静态方法,方便对集合进行操作。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值