本系列文章主要对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. Channel 9视频整理【5】

    Jennifer Chiu https://channel9.msdn.com/Niners/JenniferChiu

  2. Oracle 11g R2 for Win10(64位)的安装注意点

    一般我们在win10系统安装oracle11g或者10g及更低版本的oracle客户端时,都是无法安装,一般安装的时候会闪退.这是什么原因呢?其实很简单,win10出的时间比较晚,在oracle11g ...

  3. Docker zookeeper 集群 for Docker desktop (win)

    docker desktop win10 环境下的 zookeeper 容器创建并运及可能出现的问题: https://github.com/poazy/boazy-learn/blob/master ...

  4. HMaster/HRegion Server 工作原理

      1.HBase系统架构       2. HRegion Sever架构图 0.94之前的版本 0.96+的版本 WAL: 即Write Ahead Log, 是HDFS上一个文件,早期版本中称为 ...

  5. JVM 体系结构与工作方式

    .katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...

  6. JVM执行引擎

    1.概述 执行引擎是jvm核心组成部分之一,建立在物理器,硬件和操作系统层面之上,引擎在执行代码时会有解释执行和编译执行两种选择,输入字节码文件,字节码解析输出结果. 2.栈帧 栈帧是用于支持虚拟机进 ...

  7. bootstrap 轮播craousel 采坑之(修改默认鼠标浮动轮播不停止)

    首先上bootstrap 官网 https://v3.bootcss.com/javascript/#carousel 设置这个参数就可以,后面说如何采坑.见代码 html 部分 <!-- 轮播 ...

  8. 基于Redis的分布式锁和Redlock算法

    1 前言 前面写了4篇Redis底层实现和工程架构相关文章,感兴趣的读者可以回顾一下: Redis面试热点之底层实现篇-1 Redis面试热点之底层实现篇-2 Redis面试热点之工程架构篇-1 Re ...

  9. 「Poj1845」Sumdiv 解题报告

    题面戳这里 啥都别看,只是求 \(a^b\)所有的因数的和 思路: 真没想到! 其实我们可以先将\(a^b\)分解成质因数的 因为\(a^b\)的因数肯定是\(a^b\)的质因数在一定的条件下相乘而成 ...

  10. HBase学习笔记(四)—— 架构模型

    在逻辑上,HBase 的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列. 但从 HBase 的底层物理存储结构(K-V)来看,HBase 更像是一个 multi-dimensional m ...