本系列文章主要对java集合的框架进行一个深入浅出的介绍,使大家对java集合有个深入的理解。

本篇文章主要具体介绍了Collection接口,Map接口以及Collection接口的三个子接口Set,List,Queue。

什么是集合

Java集合类存放于 java.util 包中,是一个用来存放对象的容器。

集合有以下几个特点:

①集合只能存放对象。比如你存一个 int 型数据 1放入集合中,其实它是自动转换成 Integer 类后存入的。

②集合存放的是对象的引用,对象本身还是放在堆内存中。

③集合可以存放不同类型,不限数量的数据类型。

集合和数组的区别

1.数组长度需初始化时指定长度,只能保存定长的数据;而集合可以保存数量不确定的数据。

2.数组可以存基本类型,也可以是对象;

集合里只能保存对象(实际上保存对象的引用变量)。

Java集合介绍

主要分为Collection接口和Map接口,Collection接口有3个主要的接口List,Set,Queue

整体框架如下:

图源于网络

迭代接口Iterator

所有的集合类都实现了Iterator接口,这是一个用于遍历集合中元素的接口

所包含方法如下:

Collection接口

Collection接口是处理对象集合的根接口,其中定义了很多对元素进行操作的方法,框架图中的AbstractCollection提供Collection部分实现的抽象类。

Collection接口中的所有方法

其中比较常用的方法如下

  • add(E) 添加一个元素到集合中

  • addAll(Collection) 将指定集合中的所有元素添加到集合中

  • remove(Object) 删除一个元素

  • contains(Collection) 方法检测集合中是否包含指定的元素

  • toArray() 方法返回一个表示集合的数组

Collection三个子接口

Collection的常用方法,在子接口中同样常用,下面不再重复说明

1.List(有序、可重复)

List里存放的对象是有序的,同时也是可以重复的,List关注的是索引,拥有一系列和索引相关的方法,查询速度快。因为往list集合里插入或删除数据时,会伴随着后面数据的移动,所有插入删除数据速度慢。

List接口中的所有方法

其中主要比较常用的方法如下

  • get(int) 获取元素

  • set(int, E) 设置元素到某个索引位置

  • add(int, E) 添加元素到某个索引位置

  • add(int, E) 删除某个索引位置元素

  • sort(Comparator) 排序

2.Set(无序、不能重复)

Set里存放的对象是无序,不能重复的,集合中的对象不按特定的方式排序,只是简单地把对象加入集合中。

List接口中的全部方法

Set只继承了Collection,并没有添加自己的方法,所以常用方法与Collection一样

3.Queue(有序、可重复、先进先出、不可随机访问)

队列是“先进先出”容器。插入新元素只能添加到队列的尾部,获取或删除元素只能是队列头部的元素。

Queue中的所有方法

需要注意的是,新增、检索、删除都分别提供了两种方法,请注意一下它们的区别

4.Map(键值对、键唯一、值不唯一)

Map集合中存储的是键值对,提供key(键)到value(值)的映射,键不能重复,值可以重复。

Map的所有方法如下图

常用方法如下:

  • get(Object) 获取元素

  • put(K, V) 添加元素

  • remove(K) 删除元素

  • entrySet() 获取Entry集合,一般用于遍历Map里的元素

Map中还包括一个内部类Entry,该类封装了一个key-value对。Map内部存储是通过Entry进行存储的。 Entry包含如下三个方法:

List、Set、Map的区别

1.继承

List和Set继承Collection接口,而Map不是

2.重复性:

① List允许有重复的元素。任何数量的重复元素都可以在不影响现有重复元素的值及其索引的情况下插入到List集合中;

② Set集合不允许元素重复。Set以及所有实现了Set接口的类都不允许重复值的插入,若多次插入同一个元素时,在该集合中只显示一个;

③ Map以键值对的形式对元素进行存储。Map不允许有重复键,但允许有不同键对应的重复的值;

3.有序性:

① List及其所有实现类保持了每个元素的插入顺序;

② Set中的元素都是无序的;但是某些Set的实现类以某种殊形式对其中的元素进行排序,如:LinkedHashSet按照元素的插入顺序进行排序;

③ Map跟Set一样对元素进行无序存储,但其某些实现类对元素进行了排序。如:TreeMap根据键对其中的元素进行升序排序;

4.空值(Null)问题:

① List允许任意数量的空值(Null)

② Set最多允许出现一个空值(Null)(因为Set集合不允许元素重复,实际可上重复插入空值(Null))

③  Map只允许出现一个空键(Null),但允许出现任意数量的空值(Null)

总结:

List中的元素,有序、可重复、任意空值

Set中的元素,无序、不重复、只有一个空元素

Map中的元素,无序、键不重,值可重、可一个空键,多可空值

以上是java集合框架的概括内容,通过这篇文章主要了解一些基本的概念以及对集合的操作方法。

后续文章将对java集合中的具体实现类进行深入了解。有兴趣的话可以观看后续内容,进一步了解java集合内容。

「 深入浅出 」java集合Collection和Map的更多相关文章

  1. 「 深入浅出 」集合Map

    系列文章: 「 深入浅出 」java集合Collection和Map 「 深入浅出 」集合List 「 深入浅出 」集合Set 前面已经介绍完了Collection接口下的集合实现类,今天我们来介绍M ...

  2. 「 深入浅出 」集合Set

    系列文章 「 深入浅出 」集合List 「 深入浅出 」java集合Collection和Map Set继承自Collection接口,不能包含有重复元素.本篇文章主要讲Set中三个比较重要的实现类: ...

  3. 「 深入浅出 」集合List

    第一篇文章 「 深入浅出 」java集合Collection和Map 主要讲了对集合的整体介绍,本篇文章主要讲List相对于Collection新增的一些重要功能以及其重要子类ArrayList.Li ...

  4. Java 集合系列 15 Map总结

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  5. Java 集合系列 08 Map架构

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  6. Java集合框架之Map接口浅析

    Java集合框架之Map接口浅析 一.Map接口综述: 1.1java.util.Map<k, v>简介 位于java.util包下的Map接口,是Java集合框架的重要成员,它是和Col ...

  7. Java集合框架之map

    Java集合框架之map. Map的主要实现类有HashMap,LinkedHashMap,TreeMap,等等.具体可参阅API文档. 其中HashMap是无序排序. LinkedHashMap是自 ...

  8. Java集合 Collection、Set、Map、泛型 简要笔记

    集合 什么是集合 概念 对象的容器,实现了对对象常用的操作 和数组的区别 数组长度固定,集合长度不固定 数组可以存储基本类型和引用类型,集合只能存储引用类型 位置 java.util.*; Colle ...

  9. 5、数组和集合--Collection、Map

    一.数组:同一个类型数据的集合,其实他也是一个容器 1.数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些数据 2.数组的定义: 在Java中常见: 格式1:  类型 [] 数组名 = ne ...

随机推荐

  1. GitHub使用详细流程(多人开发)

    联合项目开发GIThub使用 分支 在没有使用分支之前,git会默认有一个分支, 就是主分支(master分支,还记得 git push –u origin master这个命令吗?) 这里的mast ...

  2. HDU6579 2019HDU多校训练赛第一场1002 (线性基)

    HDU6579 2019HDU多校训练赛第一场1002 (线性基) 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6579 题意: 两种操作 1.在序列末 ...

  3. N9K 40G接口一分4*10G配置

    Breakout InterfacesCisco NX-OS supports the breakout of high bandwidth 40G interfaces at the module ...

  4. Android Library的依赖方式及发布(转)

    还是那句老话,好记性不然烂笔头,在此整理 Android Studio 依赖相关 以及 如何发布项目到 JCenter Android Studio 添加依赖Module 依赖module 依赖是指在 ...

  5. mac笔记本安装Android sdk

    一.先下载android sdk for mac   给二个靠谱的网址: a). http://down.tech.sina.com.cn/page/45703.html b). http://mac ...

  6. shellcode超级反杀

    shellcode超级免杀 作者声明: 本文章属于作者原创,不能转载,违反网络安全法自己承担.这里只供学习使用. 日期: 2019-12-30 我试过了电脑管家,火绒安全,360....一系列杀毒软件 ...

  7. POJ-1741 树上分治--点分治(算法太奇妙了)

    给你1e5个节点的树,(⊙﹏⊙) 你能求出又几对节点的距离小于k吗??(分治NB!) 这只是一个板子题,树上分治没有简单题呀!(一个大佬说的) #include<cstdio> #incl ...

  8. 记一次ftp错误

    在一个ftp上,突然登不上 报错,使用浏览器登录,报此用户不是私密连接,然后使用服务器客户端登录尝试,错误信息如下: [root@test ~]# ftp *.*.*.* Connected to * ...

  9. 洛谷$P4755\ Beautiful\ Pair$ 最大值分治

    正解:最大值分治 解题报告: 传送门$QwQ$ 昂考虑如果已经钦定了点$x$是这个$max$了,然后现在要求有多少对$[l,r]$满足$a_x=max\left\{a_i\right\},i\in[l ...

  10. Spring Security入门(基于SSM环境配置)

    一.前期准备 配置SSM环境 二.不使用数据库进行权限控制 配置好SSM环境以后,配置SpringSecurity环境 添加security依赖   <dependency> <gr ...