Java中具有映射关系的容器:数组和Map的区别说明

 更新时间:2020年09月23日 14:20:06   作者:G_66  
这篇文章主要介绍了Java中具有映射关系的容器:数组和Map的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

映射就意味着有两部分;

存储映射关系的容器是数组和Map集合;

区别:

(1)当映射关系中的一方是有序编号时,这个时候要想到数组这种结构;

(2)Map不一定需要有序编号,它只能建立对象之间的关系;

(3)如果映射的两方没有任何一方是有序的编号,就不能想数组了,这时应该用集合中具备映射关系的容器Map。

注意:

(1)Map中键相同时,键值会被覆盖;

(2)Map中一个Key可以对应一个集合,因为集合也是一个对象,集合也能往集合中放。

(3)Map<int,char>这样写是不正确的,因为,泛型中定义的必须是引用数据类型,所以,要找int和char的对象的包装类即Map<Integer,Character>

补充知识:Java基础:集合(容器)—Collection和Map两大体系介绍和用法

集合类的作用

集合类也叫做容器类,和数组一样,用于存储数据,但数组类型单一,并且长度固定,限制性很大,而集合类可以动态增加长度。

集合存储的元素都是对象(引用地址),所以集合可以存储不同的数据类型,但如果是需要比较元素来排序的集合,则需要类型一致。

集合中提供了统一的增删改查方法,使用方便。

支持泛型,避免数据不一致和转换异常,还对常用的数据结构进行了封装。

集合框架体系的组成

集合框架体系是由Collection、Map(映射关系)和Iterator(迭代器)组成,各部分的作用如下所示。

Collection体系中有三种集合:Set、List、Queue

Set(集): 元素是无序的且不可重复。

List(列表):元素是有序的且可重复。

Queue(队列):封装了数据结构中的队列。

Map体系

Map用于保存具有映射关系的数据,即key-value(键值对)。Map集合的key是唯一的,不可重复,而value可以重复。所以一个value可以对应多个key。

Map体系除了常用类之外,还有Properties(属性类)也属于Map体系。

Iterator(迭代器)

基本功能就是遍历集合中的所有元素,除了List集合有一个独有的迭代器Listiterator,别的集合类都是一样的。

每个集合类都有iterator(),调用该方法就能得到迭代器对象。

如果List集合使用迭代器,建议使用ListIterator,比原有的迭代器多了一些方法。

除了使用迭代器遍历集合元素,也可以使用加强for和Java8的foreach()方法。如果是List集合,使用for循环也能做到。

Collection接口方法

Collection是Set、List和Queue接口的父接口,Set、List、Queue的子类都能使用如下方法。

boolean add(E e)_______________________________添加指定元素
boolean addAll(Collection c)___________________将指定集合中所有元素都添加到此 collection
boolean contains(Object o)_____________________集合中是否包含了指定元素
boolean containsAll(Collection<?> c)___________该集合是否包含指定集合中所有元素
boolean remove(Object o)_______________________移除指定元素
boolean removeAll(Collection<?> c)_____________移除指定的collection参数的所有元素
void clear()___________________________________清除集合中所有元素
boolean retainAll(Collection<?> c)_____________保留指定Collection参数中元素,是两个集合的元素交集
boolean equals(Object o)_______________________比较此 collection 与指定对象是否相等
boolean isEmpty()______________________________判断该集合是否为空
Iterator<E> iterator()_________________________返回此 collection 的迭代器,用来遍历元素
int hashCode()_________________________________返回集合的哈希码值
int size()_____________________________________返回此 collection 中的元素数
Object[] toArray()_____________________________返回一个包含该Collection所有元素的对象数组
<T> T[] toArray(T[] a)_________________________返回一个包含该Collection所有元素的数组,数组类型和指定数组的类型一致

Map接口方法

 boolean containsKey(Object key)________________该映射是否包含指定键值
 boolean containsValue(Object value)____________如果该键值对中有一个或多个key射到指定值,则返回 true
 Set<Map.Entry<K,V>> entrySet()_________________返回此映射中包含的映射关系的 Set 视图。
 Set<K> keySet()________________________________返回此映射中所有键的 Set 视图。
 Collection<V> values()_________________________返回一个此映射中包含的值的 Collection
 V get(Object key)______________________________返回指定键映射的值。如果不存在,则返回 null
 V put(K key, V value)__________________________放入一个键值对(key-value)
 void putAll(Map<? extends K,? extends V> m)____把指定映射的所有映射关系复制到此映射中
 boolean isEmpty()______________________________如果此映射未包含键值映射关系,则返回 true
 boolean equals(Object o)_______________________比较指定的对象与此映射是否相等
 int size()_____________________________________返回此映射中的键-值映射关系数
 int hashCode()_________________________________返回此映射的哈希码值

以上这篇Java中具有映射关系的容器:数组和Map的区别说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 必知必会的SpringBoot实现热部署两种方式

    必知必会的SpringBoot实现热部署两种方式

    这篇文章主要为大家介绍了必知必会的SpringBoot实现热部署两种方式详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Java spring boot实现批量删除功能详细示例

    Java spring boot实现批量删除功能详细示例

    这篇文章主要给大家介绍了关于Java spring boot实现批量删除功能的相关资料,文中通过代码以及图文将实现的方法介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-08-08
  • SpringBoot的启动过程源码详细分析

    SpringBoot的启动过程源码详细分析

    这篇文章主要介绍了SpringBoot的启动过程源码详细分析,SpringBoot启动的时候,会构造一个SpringApplication的实例,构造SpringApplication的时候会进行初始化的工作,需要的朋友可以参考下
    2023-11-11
  • javaSystem.out.println()输出byte[]、char[]异常的问题详析

    javaSystem.out.println()输出byte[]、char[]异常的问题详析

    这篇文章主要给大家介绍了关于javaSystem.out.println()输出byte[]、char[]异常问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看啊
    2019-01-01
  • Java 泛型总结(一):基本用法与类型擦除

    Java 泛型总结(一):基本用法与类型擦除

    本文主要介绍了Java泛型的使用以及类型擦除相关的问题。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • java中Swing五种常见的布局方式

    java中Swing五种常见的布局方式

    本文通过代码示例给大家详细讲解了java中Swing五种常见的布局方式,以及相关注意知识点,有兴趣的朋友参考学习下。
    2018-03-03
  • IntelliJ IDEA Java项目手动添加依赖 jar 包的方法(图解)

    IntelliJ IDEA Java项目手动添加依赖 jar 包的方法(图解)

    这篇文章主要介绍了IntelliJ IDEA Java项目手动添加依赖 jar 包,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • spring 自动装配和aop的使用

    spring 自动装配和aop的使用

    这篇文章主要介绍了spring 自动装配和aop的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • java并发编程JUC CountDownLatch线程同步

    java并发编程JUC CountDownLatch线程同步

    这篇文章主要介绍CountDownLatch是什么、CountDownLatch 如何工作、CountDownLatch 的代码例子来展开对java并发编程JUC CountDownLatch线程同步,需要的朋友可以参考下面文章内容
    2021-09-09
  • Java定义栈结构,并实现入栈、出栈操作完整示例

    Java定义栈结构,并实现入栈、出栈操作完整示例

    这篇文章主要介绍了Java定义栈结构,并实现入栈、出栈操作,结合完整实例形式分析了java数据结构中栈的定义、以及入栈、出栈、栈是否为空判断、栈大小计算、打印栈元素等相关操作技巧,需要的朋友可以参考下
    2020-02-02

最新评论