理解java集合——集合框架 Collection、Map
1、概述: @white
Java集合就像一种容器,可以把多个对象(实际上是对象的引用,但习惯上都称对象)“丢进”该容器中。
2、Java集合大致可以分4类: @white
Set:代表无序、不可重复的集合;
List:代表有序、重复的集合;
Map:代表具有映射关系的集合
Queue:代表一种队列集合实现;(Java 5增加)
3、Java集合和数组的区别 @white
1、长度:
数组:只能保存定长的数据,长度在初始化时指定;
集合:可保存数量不确定的数据。
2、保存数据类型:
数组:基本类型和对象。
集合:只能保存对象(实际保存对象的引用变量),基本数据类型变量需转换为对应的包装类才能放入集合类中。
4、接口和类图说明: @white
4.1 整体说明:
这个主要是看类图,如果你结合类图,仔细看过源码,那么这些理解都不是问题。因为你只是看教程,缺少第一手资料,缺少细节,反而总是更加不理解。
4.2 类图:
https://upload-images.jianshu.io/upload_images/2993097-d92fdc13030b2126.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/650
图片来源:Java集合框架学习-----Collection接口概述 - 简书 https://www.jianshu.com/p/b878a4e1c762
4.3 类图图例使用说明:
接口:用虚线框表示:
类:用实线框表示;
接口和接口之间的实现:用虚线和空白三角表示;
类与类之间,以及类与接口之间的实现:用实现线和空白三角
produce关系-即之间有关系,但并非直接实现:虚线和实心三角
4.4 Collection接口:主要包含如下子接口
Set 接口:
List 接口:
Queue接口:(队列:先进先出)
4.5 Map接口和Collection接口的关系:(之间没有实际继承关系,只是)
1、虽然总是将Map和List 以及Set 一起说,但实际上Map和List 以及Set并不是同级关系。List 和Set是Collection的子接口;Map并不是,Map并不属于Collection接口系列。
2、Map和Collection的关系在于Map的实现上。因为Map的所有key实际是一个Set对象,Map的所有value也是一个Collection接口对象。(可看Map接口源码)
3、其他,并没有太多关系。
5、各个接口特性说明以及常用实现类: @white
5.1 Set 接口: @white
5.1.1 特性说明:
元素不允许重复,无序
5.1.2 常用实现类:
HashSet:
LinkedHashSet
TreeSet
EnumSet
5.2 List 接口: @white
5.2.2 特性说明:
有序
5.2.2 常用实现类:
ArrayList:
LinkedList:
Vector
Stack
5.3 Queue接口: @white
5.3.2 特性说明:
队列:先进先出
5.3.2 常用实现类:
PriorityQueue
Deque(子接口)
ArrayDeque
5.4 Map接口 @white
5.4.1 特性说明:
保存具有映射关系的数据;
key和value都可以是任何引用类型的数据。
Map的key不允许重复(任何两个key比较总是返回false)
实质:所有key是一个Set集合,所有value几乎是一个List集合
5.4.2 常用实现类:
HashTable
HashMap:
LinkedHashMap
TreeMap:
6、其他相关接口说明: @white
6.1 Iterator接口
6.1.1 概念:
被称作迭代器,是Collection接口的父接口。
主要用于遍历Collection集合中的元素。
6.1.2 主要注意:
修改迭代变量的值对集合元素本身没有任何影响。
6.1.2.1 原因:
使用Iterator对集合元素进行迭代时;
Iterator并不是把集合元素本身传给了迭代变量,而是把集合元素的值传给了迭代变量(就如同参数传递是值传递,基本数据类型传递的是值,引用类型传递的仅仅是对象的引用变量)
所以除非实际修改该对象指向的内容,否则不会对集合产生影响。
6.1.2.2 原因分析和详解:
具体可以参考:由浅入深理解java集合(一)——集合框架 Collection、Map - 简书 https://www.jianshu.com/p/589d58033841
7、参考: @white
本文参考:由浅入深理解java集合(一)——集合框架 Collection、Map - 简书 https://www.jianshu.com/p/589d58033841(这个系列的所有文章)
理解java集合——集合框架 Collection、Map的更多相关文章
- 深入理解Java中的Garbage Collection
前提 最近由于系统业务量比较大,从生产的GC日志(结合Pinpoint)来看,需要对部分系统进行GC调优.但是鉴于以往不是专门做这一块,但是一直都有零散的积累,这里做一个相对全面的总结.本文只针对Ho ...
- Java容器类接口:Iterator,Collection,Map
Iterator Iterator被称为迭代器,是一个对象,它的工作是遍历并选择序列中的对象,可以实现以下一些操作: 使用方法iterator()要求容器返回一个Iterator,Iterator将返 ...
- 深入理解java:4. 框架编程
了解 Servlet 和 Filter Servlet(即servlet-api.jar) 是 J2EE 最重要的一部分,有了 Servlet 你就是 J2EE 了,J2EE 的其他方面的内容择需采用 ...
- Scala中集合类型与java中集合类型转换
对于java中的集合元素并不能在scala中拿来就用的,需要进行相应的转换. 1. 转换规则如下 从下面可以看出,有些可以相互转换的,有些只能单向转换: scala.collection.Iterab ...
- 我所理解Java集合框架的部分的使用(Collection和Map)
所谓集合,就是和数组类似——一组数据.java中提供了一些处理集合数据的类和接口,以供我们使用. 由于数组的长度固定,处理不定数量的数据比较麻烦,于是就有了集合. 以下是java集合框架(短虚线表示接 ...
- 【由浅入深理解java集合】(一)——集合框架 Collction、Map
本篇文章主要对java集合的框架进行介绍,使大家对java集合的整体框架有个了解.具体介绍了Collection接口,Map接口以及Collection接口的三个子接口Set,List,Queue. ...
- 自顶向下理解Java集合框架(三)Map接口
Map基本概念 数据结构中Map是一种重要的形式.Map接口定义的是查询表,或称查找表,其用于储存所谓的键/值对(key-value pair),其中key是映射表的索引. JDK结构中还存在实现Ma ...
- java的集合框架set 和map的深入理解
Java的集合框架之Map的用法详解 Map有两种比较常用的实现:HashMap 和 TreeMap. HashMap: HashMap 也是无序的,也是按照哈希编码来排序的,允许使用null 值和n ...
- Java 集合深入理解(3):Collection
点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 今天心情有点粉,来学学 Collection 吧! 什么是集合? 集合,或者叫容器,是一个包含多个元素的对象: 集合可以对 ...
随机推荐
- C#指南,重温基础,展望远方!(6)C#类和对象
类是最基本的 C# 类型. 类是一种数据结构,可在一个单元中就将状态(字段)和操作(方法和其他函数成员)结合起来. 类为动态创建的类实例(亦称为“对象”)提供了定义. 类支持继承和多形性,即派生类可以 ...
- Ajax高级应用---Comet
非常适合处理体育比赛的分数和股票报价 1.HTTP流 将输出缓存中的内容一次性全部发送到客户端的功能是实现HTTP流的关键所在.
- Windows+Nginx+IIS做图片分布式存储详细步骤
最近几天,一直在学习nginx在windows平台下的使用,为了寻找几种大量图片分布式存储而且有相对简单的存储方案 nginx是一种,还找到一种MongoDB GridFS 这两种方案我还是比较中意的 ...
- atitit.React 优缺点 相比angular react是最靠谱的web ui组件化方案了
atitit.React 优缺点 相比angular react是最靠谱的web ui组件化方案了 1. React的组件化才是web ui部件的正确方向1 1.1. 组件化集成html ,css ...
- iOS 图片的属性
UIViewContentModeScaleToFill UIViewContentModeScaleAspectFit UIViewContentModeScaleAspectFill UIView ...
- PHP命名空间规则解析及高级功能
日前发布的PHP .3中,最重要的一个新特性就是命名空间的加入.本文介绍了PHP命名空间的一些术语,其解析规则,以及一些高级功能的应用,希望能够帮助读者在项目中真正使用命名空间. 在这里中我们介绍了P ...
- CCNA2.0笔记_路由相关
路由器的工作内容 -路由器知道目标地址 -发现到达目标地址的可能的路由 -选择最佳路径(路由表) -维护路由信息 路由的来源 直连路由:直接连到路由器上的网络 -初始化情况下,路由器所知的网络,只有其 ...
- hdu 1213 (How Many Tables)(简单的并查集,纯模板)
How Many Tables Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- Python Excel 导入导出【转】
一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了python 环境. 二.使用介绍 1.导入模块 import x ...
- java请求POST发送json格式请求
public static String upload(String url){ try { HttpClient httpclient = new DefaultHttpClient(); Http ...
本文参考:由浅入深理解java集合(一)——集合框架 Collection、Map - 简书 https://www.jianshu.com/p/589d58033841(这个系列的所有文章)
前提 最近由于系统业务量比较大,从生产的GC日志(结合Pinpoint)来看,需要对部分系统进行GC调优.但是鉴于以往不是专门做这一块,但是一直都有零散的积累,这里做一个相对全面的总结.本文只针对Ho ...
Iterator Iterator被称为迭代器,是一个对象,它的工作是遍历并选择序列中的对象,可以实现以下一些操作: 使用方法iterator()要求容器返回一个Iterator,Iterator将返 ...
了解 Servlet 和 Filter Servlet(即servlet-api.jar) 是 J2EE 最重要的一部分,有了 Servlet 你就是 J2EE 了,J2EE 的其他方面的内容择需采用 ...
对于java中的集合元素并不能在scala中拿来就用的,需要进行相应的转换. 1. 转换规则如下 从下面可以看出,有些可以相互转换的,有些只能单向转换: scala.collection.Iterab ...
所谓集合,就是和数组类似——一组数据.java中提供了一些处理集合数据的类和接口,以供我们使用. 由于数组的长度固定,处理不定数量的数据比较麻烦,于是就有了集合. 以下是java集合框架(短虚线表示接 ...
本篇文章主要对java集合的框架进行介绍,使大家对java集合的整体框架有个了解.具体介绍了Collection接口,Map接口以及Collection接口的三个子接口Set,List,Queue. ...
Map基本概念 数据结构中Map是一种重要的形式.Map接口定义的是查询表,或称查找表,其用于储存所谓的键/值对(key-value pair),其中key是映射表的索引. JDK结构中还存在实现Ma ...
Java的集合框架之Map的用法详解 Map有两种比较常用的实现:HashMap 和 TreeMap. HashMap: HashMap 也是无序的,也是按照哈希编码来排序的,允许使用null 值和n ...
点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 今天心情有点粉,来学学 Collection 吧! 什么是集合? 集合,或者叫容器,是一个包含多个元素的对象: 集合可以对 ...
类是最基本的 C# 类型. 类是一种数据结构,可在一个单元中就将状态(字段)和操作(方法和其他函数成员)结合起来. 类为动态创建的类实例(亦称为“对象”)提供了定义. 类支持继承和多形性,即派生类可以 ...
非常适合处理体育比赛的分数和股票报价 1.HTTP流 将输出缓存中的内容一次性全部发送到客户端的功能是实现HTTP流的关键所在.
最近几天,一直在学习nginx在windows平台下的使用,为了寻找几种大量图片分布式存储而且有相对简单的存储方案 nginx是一种,还找到一种MongoDB GridFS 这两种方案我还是比较中意的 ...
atitit.React 优缺点 相比angular react是最靠谱的web ui组件化方案了 1. React的组件化才是web ui部件的正确方向1 1.1. 组件化集成html ,css ...
UIViewContentModeScaleToFill UIViewContentModeScaleAspectFit UIViewContentModeScaleAspectFill UIView ...
日前发布的PHP .3中,最重要的一个新特性就是命名空间的加入.本文介绍了PHP命名空间的一些术语,其解析规则,以及一些高级功能的应用,希望能够帮助读者在项目中真正使用命名空间. 在这里中我们介绍了P ...
路由器的工作内容 -路由器知道目标地址 -发现到达目标地址的可能的路由 -选择最佳路径(路由表) -维护路由信息 路由的来源 直连路由:直接连到路由器上的网络 -初始化情况下,路由器所知的网络,只有其 ...
How Many Tables Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了python 环境. 二.使用介绍 1.导入模块 import x ...
public static String upload(String url){ try { HttpClient httpclient = new DefaultHttpClient(); Http ...