Java容器深度总结:Java容器整体结构
趁阳光正好,趁微风不燥,趁现在的双手还能拥抱彼此,趁我们还能呼吸,去见你想见的人,做你想做的事。
内容
- 1.继承关系
- 2.Collection
- 2.1 List
- 2.2 Set
- 2.3 Queue
- 3.Map
- 4.迭代器
- 5.工具类
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:提供各种静态方法,方便对集合进行操作。
Java容器深度总结:Java容器整体结构相关推荐
- Java图形化界面设计——容器(JFrame)
Java图形化界面设计--容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构 ...
- java中组件与容器_java中的容器组件和非容器组件
1.java使用到的图形类主要在java.awt 与javax.swing包中. 2.java.awt 与 javax.swing包的区别: ① java.awt中使用的图形类都是依赖于系统的图形库的 ...
- java 容器限制大小,容器中的Java与内存限制:LXC、Docker与OpenVZ
开发者在使用JVM.内存与Docker时是否遭遇到难题?今天我们将一同利用Jelastic将其解决.最近Matt Willaims提起的Docker内Java及其内存限制的议题得到了广泛关注,而这些在 ...
- Java知识点总结(Java容器-EnumSet)
Java知识点总结(Java容器-EnumSet) @(Java知识点总结)[Java, Java容器, JavaCollection, JavaSet] EnumSet EnumSet是一个专为枚举 ...
- docker和java容器_使用Docker容器和Java EE进行持续交付
docker和java容器 组织需要一种使应用程序交付快速,可预测和安全的方法,而诸如docker之类的容器所提供的敏捷性则可以帮助开发人员实现这一目标. 对于Java EE应用程序,这可以在容器中打 ...
- Java并发编程实战~并发容器
在容器领域一个容易被忽视的"坑"是用迭代器遍历容器,例如在下面的代码中,通过迭代器遍历容器 list,对每个元素调用 foo() 方法,这就存在并发问题,这些组合的操作不具备原子性 ...
- java容器doc_关于Java容器类学习心得体会.doc
关于Java容器类学习心得体会 由于小编对C++比较熟悉所以学习Java应该重点体会Java带来的新概念本文基本上是Java标准库中集合框架的基本概念没有例子写本文的目的在于方便小编很长时间后若是忘了 ...
- Java知识点总结(Java容器-ArrayList)
Java知识点总结(Java容器-ArrayList) @(Java知识点总结)[Java, Java容器, JavaCollection, JavaList] ArrayList 底层实现是数组,访 ...
- 菜鸟学习笔记:Java提升篇4(容器4——Collections工具类、其他容器)
菜鸟学习笔记:Java容器4--Collections工具类.其他容器 Collections工具类 容器其他知识点 队列Queue Enumeration接口 Hashtable Propertie ...
- 菜鸟学习笔记:Java提升篇3(容器3——泛型、排序)
菜鸟学习笔记:Java容器3--泛型.排序 泛型 泛型类 泛型接口 泛型方法 泛型继承 通配符"?" 泛型知识点补充 容器排序 Comparable接口与compareTo方法 C ...
最新文章
- 最精准的view,canvas,surface之间的关系
- 心态很容易受别人影响_心理学:为什么我越来越容易被别人和环境影响
- C#基础知识梳理系列十:异常处理 System.Exception
- tensorrt优化笔记
- 解决Pycharm:Windows Defender might be impacting your build performance.
- 如何在ASP.NET Core程序启动时运行异步任务(3)
- laravel 模型里自定义属性_关于Laravel 7 的简单隐式路由模型绑定
- 使用web3和infura开发以太坊ethereum区块链
- Leetcode 1.两数之和
- 原始套接字AF_PACKET用法尝试
- 网络专业人士笔记(7~11章)
- matlab画动图心,matlab动态心形图代码
- apollo 横纵向控制改成MPC控制方式
- javaweb--请求转发
- SCI期刊分区-JCR分区 中科院分区
- 亚马逊智能音箱无故发出笑声,多名用户被吓尿
- Laravel 使用Dingo API
- 6.20thingworx之bug记录
- 自媒体-短视频搬运的那点事
- 删除word中的空白页
热门文章
- 关于C++的placement new和placement delete
- 第三方登录之微信登录
- 计算机网络学习1:计算机网络概论
- BackTrack5里使用OpenVAS
- php怎么转换bt,BT面板更换PHP版本 宝塔BT使用教程
- python五子棋程序教程_Python 五子棋 编程
- 通过裁切视频画面来改变视频尺寸 ,同时不影响画质
- Handlebars js模版
- [益智]:海盗分赃(博弈论的实用)
- spin_lock、spin_lock_bh、spin_lock_irq、spin_lock_irqsave的使用