Java集合框架中的元素
之前有一篇笔记,讲的是集合和泛型,这几天看Java集合中几个接口的文档,思绪非常混乱,直到看到Oracle的“The Collections Framwork”的页面,条理才清晰些,现在进行整理。
一、为什么需要集合?
应用程序中经常需要创建很多的对象来完成一定的工作,所以我们需要将这些一定数目的对象组织起来进行统一管理。
对象数组能够满足我们,如果对象的数目是清晰有限且生命周期可知,那么使用对象数组来进行管理是非常简单和直观的。
数组一旦创建,它的容量便固定了,在它的生命周期里再也无法被改变。但是程序总是在运行时才根据某些条件去创建新对象,在此之前,我们无法预知所需对象的数量,甚至会不知道确切的类型。那么如何在任意时刻管理任意数量的对象呢?集合便为此诞生了。
ps:这两种组织和管理对象的方式分别为“array-based”、“collection-based”,在下面提到的集合接口中,有一个方法叫做“toArray()”,被称为两种方式间的桥梁。
二、The Collections Framwork
Java集合框架到底包含了什么,根据它的API规范做一个总结。
1、Collection interfaces,即集合接口。
实现这些接口是我们使用集合的主要方式。它有两个根接口,Collection和Map。
至于接口的层次结构,这里不再赘述
2、 implementations,即接口实现类
是对集合接口的各种实现。
可以看到API规范中列举了多种类型的实现类,其中最基础也最重要的是General-purpose implementations,即通用实现类,里面包含了我们常用的一些数据结构。下表就是常用的接口和它们的常用的实现类:

至于其他的那些 implementations,等有需要了再看,知道实现类种类很多就行。
3、Algorithms ,算法
提供了一些基本的算法实现。
这些算法的静态方法都在一个名叫“Collections”的类中(java.util.Collections)。
4、Infrastructure,基础设施
这个在我看的书本上并没有提,看它的类型就很清楚它的作用了。它里面有4种“基础设施”:
- Iterators:Iterator、Listiterator
- Ordering:Comparable、Comparator
- Runtime exceptions:(两个类)UnsupportedOperationException 、ConcurrentModificationException
- Performance:RandomAccess
5、Array Utilities
里面就包含了Arrays类(java.util.Arrays),因为需要用到很多其中的静态方法!
附一张书本上的“集合框架全景图”:·
Java集合框架中的元素的更多相关文章
- 第49节:Java集合框架中底层文档的List与Set
Java集合框架中的List与Set // 简书作者:达叔小生 Collection -> Set 无序不重复 -> 无序HashSet,需要排序TreeSet -> List 有序 ...
- Java集合框架中的快速失败(fail—fast)机制
fail-fast机制,即快速失败机制,是java集合框架中的一种错误检测机制.多线程下用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加.删除),则会抛出Concurre ...
- Java集合框架中底层文档的List与Set
Java集合框架中的List与Set // 简书作者:达叔小生 Collection -> Set 无序不重复 -> 无序HashSet,需要排序TreeSet -> List 有序 ...
- Java集合框架中Map接口的使用
在我们常用的Java集合框架接口中,除了前面说过的Collection接口以及他的根接口List接口和Set接口的使用,Map接口也是一个经常使用的接口,和Collection接口不同,Map接口并不 ...
- Java集合框架中List接口的简单使用
Java集合框架可以简单的理解为一种放置对象的容器,和数学中的集合概念类似,Java中的集合可以存放一系列对象的引用,也可以看做是数组的提升,Java集合类是一种工具类,只有相同类型的对象引用才可以放 ...
- Java中的函数式编程(五)Java集合框架中的高阶函数
写在前面 随着Java 8引入了函数式接口和lambda表达式,Java 8中的集合框架(Java Collections Framework, JCF)也增加相应的接口以适应函数式编程. 本文的 ...
- java集合框架中contains(),containsKey()和containsValue()的用法:
List集合的contains()方法用于判断集合中包不包含某个元素,返回值是boolean. Map集合的containsKey()和containsValue()方法和上面的相同. 示例: pub ...
- java集合框架中Set和List的区别
1. Set 接口实例存储的是无序的,不重复的数据.List 接口实例存储的是有序的,可以重复的元素. 2. Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有Ha ...
- java集合框架中的去重问题
对于自定义的类来说,必须要重写hashcode和equals方法 hashcode方法的作用是确定元素在数据结构中的位置,当两个元素的hash值一样时,需要用equals方法判断两个元素是否是一样的, ...
随机推荐
- spark-sql cli 参数 及使用
很难找到spark-sql cli使用的教程,总结下一.启动方法/data/spark-1.4.0-bin-cdh4/bin/spark-sql --master spark://master:707 ...
- [CSP-S模拟测试]:Weed(线段树)
题目描述 $duyege$的电脑上面已经长草了,经过辨认上面有金坷垃的痕迹.为了查出真相,$duyege$准备修好电脑之后再进行一次金坷垃的模拟实验.电脑上面有若干层金坷垃,每次只能在上面撒上一层高度 ...
- 解决Maven打包提示:读取C:\Users\Administrator\.m2\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar时出错; invalid LOC header (bad signature)
1.打包情况 虽然提示读取jar包出错,但是还是能打包成功,在执行打的jar包时会报错,说找不到相关的类. 2.解决方案 从提示的路径可以找到对应的jar包,但为什么会读取错误呢?尝试着双击打开log ...
- 06.旋转数组的最小数字 Java
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋 ...
- EBS 创建会计科目 小结
1 创建会计科目 方式(以AP发票为例) 1)在发票工作台对单张发票进行创建科目: 参考网址: https://www.cnblogs.com/bruce_zhao/p/3809493.html 备注 ...
- Python中函数的使用
函数让代码的编写,阅读,测试和修改都变得更容易,提高代码的复用性,python中使用def关键字定义函数 如下代码在python3.7.3的Genay开发工具中编写测试通过. 一.简单函数定义及调用 ...
- 只需体验三分钟,你就会跟我一样,爱上这款Toast
只需体验三分钟,你就会跟我一样,爱上这款Toast https://www.jianshu.com/p/9b174ee2c571
- Struts模型驱动
Struts运行时候,会执行默认的拦截器栈,其中有一个拦截器,模型驱动拦截器: <interceptor name="modelDriven" class="com ...
- python 中 __dict__函数的使用
class F: def __init__(self, name, age): self.name = name self.age = age obj = F('tom', 20)s = obj.__ ...
- 学习使用Jmeter做压力测试(一)--压力测试基本概念
学习使用Jmeter做压力测试(一)--压力测试基本概念 一.性能测试的概念 性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试.负载测试和压力测试都属于性能测 ...