Java.集合 框架,接口,常用集合特点比对
框架
接口
Iterable
可迭代接口
获取迭代器方法(Iterator<T> iterator();),使用该方法进行遍历。
迭代器实现Iterator接口。
boolean hasNext();
E next();
List 列表(有序允许重复)
列表
是集合,是有序的集合。所以在Collection基础上增加了 按照位置 操作的方法。
比如:
- 根据下标遍历,获取某个位置的元素
- 添加到或者编辑某个位置的元素
- 删除某个位置的元素
- 查找某元素是否存在也扩展了indexof,返回的是下标。区别于Collection.contain返回的boolean类型
Collection 集合 根接口
集合
此集合只是广义上的集合,就是一堆数据,就是一个结合。比如:一群人,没有顺序,也没序号,只能判断有没有某人,不能获取第几个人。
注意:Collection中是集合的抽象接口,有的实现可以重复,有的不可以重复。所以这里就没法放一下对有序的操作方法,并不代表他的实现类 都不支持有序,上面的那个例子只是用来说明问题。
方法:
- 集合相关:判空,大小,清空
- 元素相关:添加,查找元素是否,删除
- 遍历:迭代遍历,转为数组
可以看出,没法定位到元素的位置的。
Queue 单向队列
队列
FIFO的集合,在Collection的基础上增加了对先进先出的操作。
方法:
- 添加元素到队尾(空报异常)
- 从队首获取或者删除元素(移除,空报异常)
- Deque 双向队列
是集合,也是队列。
在Collection和Queue的基础上,多了对头和队尾的操作函数。
方法:
- 队首添加元素到(空报异常)
- 从队首获取或者删除元素(移除,空报异常)
- 添加元素到队尾(空报异常)
- 从队尾获取或者删除元素(移除,空报异常)
Set 无重复集合
是集合
是不允许重复元素,且无序(指存取无序)。
只是对:无重复的集合 抽象, 不对应具体的数据结构。即:只要输出的结合是没有重复元素的集合,就可以实现该接口。
继承Collection接口,没有扩展方法,只是对方法在意义上做了限制。同样继承Collection接口的特征,部分实现类有序,部分无序。所以这里也没有针对有序预留接口方法。
Map 映射集合
映射的集合
Key-Value,Key和Value 都无序,Key不允许重复,重复则覆盖映射的Value。
方法:
- 大小,判空,清空
- 添加映射对
- 遍历:根据entityset,keyset或者直接遍历value集合
- 按照key获取value,更新value,判断是否包含,移除entity
Map & Collection
Map是映射的集合,每个Entity都包含:key-value,Entity是一个集合,从key维度也是一个集合,从value维度看也是一个集合。
这三个集合只不过都是无序的,entity和key的集合不允许重复(一般用Set),value是可以重复的(用Collection)。
可见Set和Map是基本数据结构抽象概念的更高层应用,只是对一组特定数据的集合抽象。而这个抽象的某一个维度又可能跟上面的某个集合特征相同。
Set & Map
逻辑上:
Set在逻辑上跟Map没有关系,Set是 单个无重复元素,且不保证存取顺序的集合的抽象。而Map本质是key-value映射对的集合。只不过Map的这个映射对 也 是不允许有重复key,以及存取顺序保证不了的。
实现上:
Map的实现是使用数组和链表的组合。鉴于Map的Key也有类似无存取顺序,不可以重复的特点,就使用Map的实现来实现Set。
抽象类
接口说清楚有什么功能,抽象类是该接口抽象逻辑的实现,并没有实际的实现。
比如:
接口中包括:contains,containsAll
抽象类中:
- 实现contains方法,不依赖具体的实现。
- containsAll是contains的封装的方法。
比如:(红色的就是依赖的接口)
contains
public boolean contains(Object o) {Iterator<E> it = iterator();if (o==null) {while (it.hasNext())if (it.next()==null)return true;} else {while (it.hasNext())if (o.equals(it.next()))return true;}return false;
}
containsAll
public boolean containsAll(Collection<?> c) {for (Object e : c)if (!contains(e))return false;return true;}
AbstractCollection
Collection接口的抽象类。
AbstractList
List接口的抽象类,继承AbstractCollection。
列表的抽象实现。
AbstractQueue
Queue接口的抽象类,继承AbstractCollection。
队列的抽象实现。
AbstractSequentialList
列表,只能按照顺序访问的列表,不支持随机访问RandomAccess(ArrayList就实现了该)。,所以遍历 AbstractSequentialList 的子类,使用 for 循环 get() 的效率要 <= 迭代器遍历
继承自AbstractList,并做了约束。
而数据结构中的链表不就是,只支持顺序访问,不支持随机访问吗。
AbstractSet
不重复,无序的Set接口的抽象类,继承AbstractCollection。
AbstractMap
Map的抽象类,只是对Map接口做了抽象实现。
集合
Vector
定义:
public class Vector<E>extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, java.io.Serializable
实现:
基础数据结构:数组
扩容:初始10,可以设置;超过长度,数组翻倍,复制元素。增加的元素数量也可以设置。
线程安全:只是在方法维度加了synchronized关键字 和 数组。
ArrayList
定义:
public class ArrayList<E> extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, java.io.Serializable
实现:
数据结构:数组
扩容:初始空数组,第一次添加元素扩容10个,以后都是当前的1.5倍或者当前要求的最小空间大小,下次再扩容。
线程安全:不安全,没有做任何线程控制
LinkedList
定义:
public class LinkedList<E>extends AbstractSequentialList<E>implements List<E>, Deque<E>, Cloneable, java.io.Serializable
实现:
数据结构:不可以随机访问的 双向链表
扩容: 直接链接到列表尾部即可
线程安全:不安全,没有做任何线程控制
HashMap
定义:
public class HashMap<K,V> extends AbstractMap<K,V>implements Map<K,V>, Cloneable, Serializable {
实现:
数据结构:数组+链表/树
扩容: 容量占比超过加载因子(默认0.75),就做re哈希
线程安全:不安全,没有做任何线程控制
HashSet
使用HashMap构建的Set。
TreeMap
使用二叉树构建的Map
TreeSet
使用二叉树构建的Set
其他接口
接口分类
标志接口:就是一个标记,instanceof 来判断
方法接口:里边有具体方法
Cloneable
标志接口
表明可被克隆接口
调用Object.clone()接口
Serializable
标志接口
表明可被序列号接口
RandomAccess
标记接口
List实现,表明可以该List支持 快速随机访问 策略。
使用 for (int i=0, n=list.size(); i < n; i++) 比for (Iterator i=list.iterator(); i.hasNext(); )这种访问速度快。
Comparable
compareTo方法来比较二者的大小。
Java.集合 框架,接口,常用集合特点比对相关推荐
- -1-3 java集合框架基础 java集合体系结构 Collection 常用java集合框架 如何选择集合 迭代器 泛型 通配符概念 Properties 集合 迭代器...
集合又称之为容器存储对象的一种方式 •数组虽然也可以存储对象,但长度是固定的:显然需要可变长度的容器 集合和数组的区别? A:长度区别 ...
- 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合...
不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...
- java集合框架容器 java框架层级 继承图结构 集合框架的抽象类 集合框架主要实现类...
本文关键词: java集合框架 框架设计理念 容器 继承层级结构 继承图 集合框架中的抽象类 主要的实现类 实现类特性 集合框架分类 集合框架并发包 并发实现类 什么是容器? 由一个或多个确 ...
- java集合课程,I学霸官方免费课程三十三:Java集合框架之Map集合
I学霸官方免费教程三十三:Java集合框架之Map集合 Map接口 Map集合采用键值对(key-value)的方式存储数据,其中键不可以重复.值可以重复. 常用类有HashMap.TreeMap和P ...
- java内部类、接口、集合框架、泛型、工具类、实现类
一.内部类 1.成员内部类. (1)成员内部类的实例化: 外部类名.内部类名 变量名=外部类对象.new 内部类名(); class Person{class Test{}}Person p=ne ...
- java jcf框架干啥的_Java集合框架(常用类) JCF
Java集合框架(常用类) JCF 为了实现某一目的或功能而预先设计好一系列封装好的具有继承关系或实现关系类的接口: 集合的由来: 特点:元素类型可以不同,集合长度可变,空间不固定: 管理集合类和接口 ...
- Java中常见的集合框架及常用的方法
本篇文章主要说明Java中一些常见的集合框架及经常用到的一些方法 , 由于都是一些父类 , 所以没有做太深入的分析说明 , 后面的文章将会分别对List , Set , Map及其常用子类进行深入研究 ...
- java api 框架_java常用对象API之集合框架
说到集合框架,其实刚开始学的时候有点自我感觉很简单,自己认为就是集合类中的框架之类的,但是当自己简单把它过了一变后发现懵里懵懂的,什么都没懂,于是自己又认认真真的看了一遍,才弄明白. 说到集合框架就不 ...
- java集合框架——接口图+类图+遗留类图
[0]README 0.1)绝对的干货,理清 java集合框架中类和接口的层次关系:
- java集合框架类_Java集合框架总结—超详细-适合面试
Set和List接口是Collection接口派生的两个子接口,Queue是Java提供的队列实现,类似于List. Map实现类用于保存具有映射关系的数据(key-value). 2.Set.Lis ...
最新文章
- 18段代码带你玩转18个机器学习必备交互工具
- 【跃迁之路】【497天】程序员高效学习方法论探索系列(实验阶段254-2018.06.17)...
- 洛谷 P1149 火柴棒等式
- 优先级调度算法(C++实现)
- 闪屏页新手引导页面主页判断跳转的逻辑
- require.js使用教程
- 【论文笔记】FaceNet: A Unified Embedding for Face Recognition and Clustering
- c++ 显示三维散点图_Matplotlib中的三维绘图
- 求解不定方程 (扩展欧几里得算法)
- 文档型数据库MongoDB使用教程
- .tpk格式文件简介
- 单核CPU处理多线程
- Deepin系统navicat15安装
- MATLAB 将图像随机裁剪为N*N的图像块
- 华为数字化转型之道 实践篇 第八章 数字化交易:让做生意简单、高效
- centos英文版下如何安装中文语言
- 报错安装c++ error unrecognized command line option ‘ -mno-avx512vbmi
- SCL语言----先进先出
- 例子解释,pandas的pd.read_csv函数,quoting = 3是什么意思
- 【隧道篇 / PPTPL2TP】(5.2) ❀ 01. PPTP L2TP 连接 ❀ FortiGate 防火墙
热门文章
- Cadence Allegro(15):设置全局铜皮参数
- 华为与小米在印度市场翻倍增长,两者会重演国内市场之争么?
- 完整LIS系统源码 大型医院实验室信息管理系统源码
- 【机器学习】线性回归——最小二乘法(理论+图解+公式推导)
- 服务器禁用网络协议,启用或禁用服务器网络协议
- torch中的spmm
- oracle 读取ldap数据,使用OID LDAP连接到带有条令的Oracle数据库
- 【微信小程序】制作个人信息页面
- python网络爬虫教程(四):强大便捷的请求库requests详解与编程实战
- 计算机模拟及其应用,计算机模拟