Java集合--概述
目录
Java集合--概述
摘要
本文主要介绍集合的整体概念,并作为接下来Java集合实现类讲解的索引。
图示
这是在网上看到了这样一张图,感觉很清晰,内容也很全面,我决定按这张图,把自己熟悉的集合都仔细研究一下。

各位置描述
| 位置 | 描述 |
|---|---|
| 左上灰色部分 | 已经过期,以后的开发中不要使用。 |
| 右上浅粉色部分 | 接口关系图 |
| 中间绿色部分 | java.util包里集合具体实现类 |
| 右下灰色部分 | java.util.concurrent包里面的类,用来处理java并发问题 |
集合分类
| 分类 | 描述 |
|---|---|
| Map | 双链集合,允许通过键来找到值 |
| List | 按照插入顺序保存元素 |
| Set | 不允许有重复元素 |
| Queue | 从一端插入元素,从另一端获取 |
实现类
| 接口 | 实现类 |
|---|---|
| List | ArrayList、LinkedList |
| Set | HashSet、LinkedHashSet、TreeSet |
| Queue | PriorityQueue、LinkedList |
| Map | HashMap、LinkedHashMap、TreeMap、WeakHashMap、IdentityHashMap |
底层数据结构
| 底层数据结构 | 实现类 |
|---|---|
| 数组 | EnumMap、ArrayList、ArrayQueue |
| 链表 | LinkedHashSet、LinkedList、LinkedHashMap |
| 红黑树 | TreeMap、TreeSet |
| 二叉堆 | PriorityQueue |
| 哈希表 | HashMap、HashSet、LinkedHashMap、LinkedHashSet、WeakHashMap、IdentityHashMap |
正文
一、集合的由来
如果一个程序只包含固定数量且生命周期都是已知的对象,那么这是一个非常简单的程序
为了满足常规的编程需要,我们要求能在任何时候,任何地点创建任意数量,甚至是不同类型的对象,由于数组只能装统一类型数据,而且长度固定,于是产生了集合。
二、集合特点
- 集合只能存放对象。基本数据类型会自动装箱为包装类。
- 集合存放的是对象的引用,对象本身还是放在堆内存中。
- 集合可以存放不同类型,不限数量的数据类型。
三、迭代器
使用集合必须对具体实现类进行操作,但是考虑如下状况:如果原本是对List进行编程,现在要把相同的代码用在Set上,如果能不关心容器类型只关心对集合得操作该怎么办?于是,迭代器因此产生。
迭代器是一个对象,它的工作就是遍历并选择序列中的对象,而且客户端不需要关注序列的底层结构,Java中Iterator只能单向移动,但是其子接口ListIterator可以双向移动。
Iterator中有hashNext(),next(),remove()几个方法,ListIterator在它的基础上又添加了三种方法,分别是 add(),previous(),hasPrevious()。
Collection顶层结构接口是Iterable,而Map的顶层接口是Map,Collection下的集合都可以用迭代器遍历,Map可以使用Set<Map.Entry<K, V>> entrySet()方法转换为Set进行迭代遍历。
Iterable中包含Iterator<T> iterator()方法,Collection下集合使用该方法后会返回迭代器,可对迭代器进行迭代遍历。
通常来讲有序的集合中有Iterator<T> iterator()和ListIterator<E> listIterator()方法,可以进行双向遍历,无序的集合中有Iterator<T> iterator(),只能向后遍历。
四、实现自己的集合
如果想实现自己的集合可以JDK提供的抽象类,如AbstractList,AbstractMap,通常这些抽象类已经为我们提供了现成的实现,可以根据需要对特定的抽象方法重写,直接实现List、Map这样的接口是需要实现所有方法工作量过大。
不过通常来讲,java已经提供提供了丰富的集合实现,很少会需要我们自己去实现集合。
本文参考:
Java集合--概述的更多相关文章
- 《java集合概述》
JAVA集合概述: Collection: |---List有序的:通过索引就可以精确的操作集合中的元素.元素是可以重复的. List提供了增删改查的动作. 增加add(element) add(in ...
- Java集合概述、Set集合(HashSet类、LinkedHashSet类、TreeSet类、EnumSet类)
Java集合概述.Set集合(HashSet类.LinkedHashSet类.TreeSet类.EnumSet类) 1.Java集合概述1)数组可以保存多个对象,但数组长度不可变,一旦在初始化数组时指 ...
- Java笔记:Java集合概述和Set集合
本文主要是Java集合的概述和Set集合 1.Java集合概述 1)数组可以保存多个对象,但数组长度不可变,一旦在初始化数组时指定了数组长度,这个数组长度就是不可变的,如果需要保存数量变化的数据,数组 ...
- 第8章-Java集合 --- 概述
第8章-Java集合 --- 概述 (1)Java集合类是一种特别有用的工具类,可以用于存储数量不等的多个对象,并可以实现常用的数据结构,如 栈.队列等. (2)Java集合大致可分为Set.List ...
- Java集合----概述、Collection接口、Iterator接口
Java 集合概述 Java 集合就像一种容器,可以把多个对象的引用放入容器中. Java 集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组 Java 集合可分为 Set.Li ...
- Java集合——概述
Java集合——概述 摘要:本文主要介绍了几种集合类型以及有关的一些知识点. 集合类图 类图 类图说明 所有集合类都位于java.util包下.Java的集合类主要由两个接口派生而出:Collecti ...
- Java集合概述(上)
Java集合概述(上) 前言 先说说,为什么要写这么一篇博客(我总是喜欢写原因).因为最近到年底了,正好又要准备面试,所以在做各方面的技术总结.而Java集合是Java非常重要的一部分,自己前前后后也 ...
- 1.Java集合总结系列:Java集合概述
一.概述 集合是 Java 中非常重要的 API,在实际应用中非常广泛,在许多面试中也是必考的知识点. Java 所有集合类都位于 java.util 包下,Java 的集合只能保存对象,而无法保存保 ...
- Java集合(一):Java集合概述
注:本文基于JDK 1.7 1 概述 Java提供了一个丰富的集合框架,这个集合框架包括了很多接口.虚拟类和实现类. 这些接口和类提供了丰富的功能.可以满足主要的聚合需求. 下图就是这个框架的总体结构 ...
随机推荐
- celery_消息队列
http://www.cnblogs.com/wupeiqi/articles/8796552.html 一. celery 简介 Celery 是一个专注于实时处理和任务调度的分布式任务队列, 同时 ...
- if判断和switch case 和三元运算符整理
if判断和switch case 和三元运算符整理 例子1:if判断写法: <script type="text/javascript"> var num = 12; ...
- python 以行为单位进行字符串的切割
可以使用str 的 splitlines() 方法 实现以行为单位 进行字符串的切割, keepends=False 不保留\n符号, kendends=True 保留\n符号 my_str = &q ...
- Django(完整的登录示例、render字符串替换和redirect跳转)
day61 1. 登录的完整示例 复习: form表单往后端提交数据需要注意哪三点: 五一回来默写 <-- 谁写错成from谁 ...
- iOS-CocoaPods安装及使用
1. 安装 Ruby 对于iOS开发者,CocoaPods是最方便的第三方管理工具了,但是怎么安装CocoaPods呢,安装CocoaPods之前,要确保mac已经安装上Ruby,但在安装Ruby时, ...
- layer弹出层设置相对父级元素定位
layer弹出层默认是相对body固定定位的,可是项目中一般需要相对某个盒子相对定位,下面是个加载弹层例子: var loadIndex = layer.open({ type: 3, //3 表示加 ...
- 初始化css文件
首先我们需要了解一下为什么需要公共样式(公共样式是为了初始化某些标签的默认值): 1. 因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面显示差 ...
- AngularJS入门之动画
AngularJS中ngAnimate模块支持动画效果,但是ngAnimate模块并未包含在AngularJS核心库中,因此需要使用ngAnimate需要在定义Module时声明对其的引用. Angu ...
- RabbitMq qos prefetch 消息堵塞问题
mq是实现代码扩展的有利手段,个人喜欢用概念来学习新知识,介绍堵塞问题的之前,先来段概念的学习. ConnectionFactory:创建connection的工厂类 Connection: 简单理解 ...
- [转] TCPIP 网络协议层对应的RFC文档
TCPIP网络协议层对应的RFC文档 RFC - Request For Comments 请求注解 TCP/IP层 网络协议 RFC文档 Physical Layer Data Link Layer ...