理解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 吧! 什么是集合? 集合,或者叫容器,是一个包含多个元素的对象: 集合可以对 ...
随机推荐
- MVC :“已添加了具有相同键的项”
最近将一个项目从ASP.NET MVC 3升级至刚刚发布的ASP.NET MVC 5.1,升级后发现一个ajax请求出现了500错误,日志中记录的详细异常信息如下: System.ArgumentEx ...
- ajax实现json循环输出结果
$.post("bankInfo.php",{key:jee_server,uid:jee_uid},function(data) { var strs=JSON.stringif ...
- makefile之findstring函数
#$(findstring <find>,<in> ) #功能:在字串<in>中查找<find>字串. #返回:如果找到,那么返回<find> ...
- linux学习笔记16--命令find
find是linux系统中用的比较多的一个命令,而且功能强大,特别是对各种查找方式的不确定位置的文件的查找. Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提 ...
- linux学习笔记15--命令locater、slocate
locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案.其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了.在一般的 di ...
- 玩黑客学校CTF
关卡很简单就不细说.不懂的百度 第一关: 源码: 解密得出为JO 第二关: 很明白,表单问题. </script> <div style = "text-align: ce ...
- 在Linux系统上查看Apache服务器的错误日志
错误日志和访问日志文件为系统管理员提供了有用的信息,比如,为 Web 服务器排障,保护系统不受各种各样的恶意活动侵犯,或者只是进行各种各样的分析以监控 HTTP 服务器.根据你 Web 服务器配置的不 ...
- 13 memcache服务检查
[root@cache01 scripts]# vim mem_check.sh #!/bin/bash count_mem=$(netstat -lntup|grep memcached|wc -l ...
- spring 的redis操作类RedisTemplate
spring 集成的redis操作几乎都在RedisTemplate内了. 已spring boot为例, 再properties属性文件内配置好 redis的参数 spring.redis.host ...
- 请写出5种常见到的runtime exception。
请写出5种常见到的runtime exception. 解答: NullPointerException:当操作一个空引用时会出现此错误. NumberFormatException:数据格式转换出现 ...
本文参考:由浅入深理解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 吧! 什么是集合? 集合,或者叫容器,是一个包含多个元素的对象: 集合可以对 ...
最近将一个项目从ASP.NET MVC 3升级至刚刚发布的ASP.NET MVC 5.1,升级后发现一个ajax请求出现了500错误,日志中记录的详细异常信息如下: System.ArgumentEx ...
$.post("bankInfo.php",{key:jee_server,uid:jee_uid},function(data) { var strs=JSON.stringif ...
#$(findstring <find>,<in> ) #功能:在字串<in>中查找<find>字串. #返回:如果找到,那么返回<find> ...
find是linux系统中用的比较多的一个命令,而且功能强大,特别是对各种查找方式的不确定位置的文件的查找. Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提 ...
locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案.其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了.在一般的 di ...
关卡很简单就不细说.不懂的百度 第一关: 源码: 解密得出为JO 第二关: 很明白,表单问题. </script> <div style = "text-align: ce ...
错误日志和访问日志文件为系统管理员提供了有用的信息,比如,为 Web 服务器排障,保护系统不受各种各样的恶意活动侵犯,或者只是进行各种各样的分析以监控 HTTP 服务器.根据你 Web 服务器配置的不 ...
[root@cache01 scripts]# vim mem_check.sh #!/bin/bash count_mem=$(netstat -lntup|grep memcached|wc -l ...
spring 集成的redis操作几乎都在RedisTemplate内了. 已spring boot为例, 再properties属性文件内配置好 redis的参数 spring.redis.host ...
请写出5种常见到的runtime exception. 解答: NullPointerException:当操作一个空引用时会出现此错误. NumberFormatException:数据格式转换出现 ...