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的更多相关文章

  1. 深入理解Java中的Garbage Collection

    前提 最近由于系统业务量比较大,从生产的GC日志(结合Pinpoint)来看,需要对部分系统进行GC调优.但是鉴于以往不是专门做这一块,但是一直都有零散的积累,这里做一个相对全面的总结.本文只针对Ho ...

  2. Java容器类接口:Iterator,Collection,Map

    Iterator Iterator被称为迭代器,是一个对象,它的工作是遍历并选择序列中的对象,可以实现以下一些操作: 使用方法iterator()要求容器返回一个Iterator,Iterator将返 ...

  3. 深入理解java:4. 框架编程

    了解 Servlet 和 Filter Servlet(即servlet-api.jar) 是 J2EE 最重要的一部分,有了 Servlet 你就是 J2EE 了,J2EE 的其他方面的内容择需采用 ...

  4. Scala中集合类型与java中集合类型转换

    对于java中的集合元素并不能在scala中拿来就用的,需要进行相应的转换. 1. 转换规则如下 从下面可以看出,有些可以相互转换的,有些只能单向转换: scala.collection.Iterab ...

  5. 我所理解Java集合框架的部分的使用(Collection和Map)

    所谓集合,就是和数组类似——一组数据.java中提供了一些处理集合数据的类和接口,以供我们使用. 由于数组的长度固定,处理不定数量的数据比较麻烦,于是就有了集合. 以下是java集合框架(短虚线表示接 ...

  6. 【由浅入深理解java集合】(一)——集合框架 Collction、Map

    本篇文章主要对java集合的框架进行介绍,使大家对java集合的整体框架有个了解.具体介绍了Collection接口,Map接口以及Collection接口的三个子接口Set,List,Queue. ...

  7. 自顶向下理解Java集合框架(三)Map接口

    Map基本概念 数据结构中Map是一种重要的形式.Map接口定义的是查询表,或称查找表,其用于储存所谓的键/值对(key-value pair),其中key是映射表的索引. JDK结构中还存在实现Ma ...

  8. java的集合框架set 和map的深入理解

    Java的集合框架之Map的用法详解 Map有两种比较常用的实现:HashMap 和 TreeMap. HashMap: HashMap 也是无序的,也是按照哈希编码来排序的,允许使用null 值和n ...

  9. Java 集合深入理解(3):Collection

    点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 今天心情有点粉,来学学 Collection 吧! 什么是集合? 集合,或者叫容器,是一个包含多个元素的对象: 集合可以对 ...

随机推荐

  1. PL/SQL TOAD 不安装Oracle客户端连接数据库的方法

    不安装Oracle客户端连接数据库的方法 本机环境: win7 64位中文旗舰版 一.准备工作: 1)到ORACLE官网下载instantclient,下载地址:http://www.oracle.c ...

  2. C# DateTime的11种构造函数 [Abp 源码分析]十五、自动审计记录 .Net 登陆的时候添加验证码 使用Topshelf开发Windows服务、记录日志 日常杂记——C#验证码 c#_生成图片式验证码 C# 利用SharpZipLib生成压缩包 Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库

    C# DateTime的11种构造函数   别的也不多说没直接贴代码 using System; using System.Collections.Generic; using System.Glob ...

  3. Android 混淆代码总结

    为了防止自己的劳动成果被别人窃取,混淆代码能有效防止被反编译,下面来总结以下混淆代码的步骤: 1. 大家也许都注意到新建一个工程会看到项目下边有这样proguard-project.txt一个文件,这 ...

  4. xml布局内容总结(三)--Android

    关于xml中经经常使用到边框及边框效果,在此进行一下总结. 3.border(边框及边框效果) (1)直角边框线 <LinearLayout         android:layout_wid ...

  5. html5-canvas绘图操作方法

    <script>function draw(){    var c=document.getElementById("mycanvas");    c.width=50 ...

  6. 1px 下划线solid的问题

    1 物理像素线,也就是普通屏幕下 1px,高清屏幕下 0.5px的情况,采用transform属性 scale 实现即可. .mod_grid { position: relative; &: ...

  7. 【转载】 使用rman进行坏块修复(ORA-01578、ORA-01110)

    [转自]http://blog.itpub.net/21256317/viewspace-1062055/ 使用rman进行坏块修复(ORA-01578.ORA-01110) 2012年的一天,处理的 ...

  8. vivado设计四:自定义IP核测试

    在vivado设计三中:http://blog.chinaaet.com/detail/37177已经建立了vivado工程和封装好了自定义IP核. 那么接下来,我们对这个自定义IP核进行测试了:我们 ...

  9. 李洪强iOS开发之iOS工具收集

    李洪强iOS开发之iOS工具收集 项目 简述 日期 我是怎么慢慢变懒的 : Jenkins + 蒲公英 使用Jenkins + 蒲公英使得项目打包给测试人员自动化,大大节省了劳动力 2015.04.1 ...

  10. CCNA2.0笔记_STP

    STP介绍 STP的主要任务是阻止在第二层网络(网桥或交换机)上产生网络环路(通过将特定的端口选为 Blocking state),来实现无环的拓扑 ; STP交换机之间使用Trunk连接 ; Cis ...