Java中的Map允许有重复元素吗?

 更新时间:2019年02月25日 11:30:40   作者:zqxhit1234  
今天小编就为大家分享一篇关于Java中的Map允许有重复元素吗?,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

Java中常见的三个集合接口:List、Set、Map,已经知道List中是允许有重复元素的,而Set中是不允许有重复元素的,那么Map中允许有重复元素吗?

查阅资料,发现是不可以的,因为map是无序的,它的查询需要通过key的值来查找,如果你定义两个同样的key,那么一个key就对应了多个值,这样就违背了java对map的定义,键和值是一一对应的。所以key不可以重复。

写个代码测试一下:

package com.test.collection;
import java.util.HashMap;
import java.util.Map;
//Map中key值不可重复的测试
public class TestEquals {
  public static void main(String[] args) {
    String s1=new String("abc");
    String s2=new String("abc");
    Map map=new HashMap();
    map.put(s1, "abc123");
    map.put(s2, "ABC456");//第二个会覆盖第一个元素
    //注意:map中key值不可重复,直接根据比较的是equals,只有equals相同则覆盖
    System.out.println(map.size());
    System.out.println(map.get(s1));
  }
}

输出结果:

1
ABC456

如果key重复,应该选取这个key对应的哪个值放入容器呢?做了一下测试:

public class Test {
  public static Map putSome(Map<String,String> map){
    map.put("gender", "Male");
    map.put("name", "Athor");
    map.put("name", "Cindy");
    map.put("name", "Billy");
    map.put("from","China");
    return map;
  }
  public static void main(String[] args) {
    System.out.println(putSome(new HashMap<String,String>()));
    System.out.println(putSome(new TreeMap<String,String>()));
    System.out.println(putSome(new LinkedHashMap<String,String>()));
  }
}

输出结果:

{name=Billy, gender=Male, from=China}
{from=China, gender=Male, name=Billy}
{gender=Male, name=Billy, from=China}

可见不论是Map的哪个子类,键name对应的值都是Billy,即最后一个name的键值对,它覆盖了之前的name键值对。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • SpringMVC+EasyUI实现页面左侧导航菜单功能

    SpringMVC+EasyUI实现页面左侧导航菜单功能

    这篇文章主要介绍了SpringMVC+EasyUI实现页面左侧导航菜单功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • Java多线程高并发中的Fork/Join框架机制详解

    Java多线程高并发中的Fork/Join框架机制详解

    本文主要介绍了 Java 多线程高并发中的 Fork/Join 框架的基本原理和其使用的工作窃取算法(work-stealing)、设计方式和部分实现源码,感兴趣的朋友跟随小编一起看看吧
    2021-11-11
  • 解决java.sql.Timestamp丢失精度的问题

    解决java.sql.Timestamp丢失精度的问题

    这篇文章主要介绍了解决java.sql.Timestamp丢失精度的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java项目部署的完整流程(超详细!)

    Java项目部署的完整流程(超详细!)

    我相信很多Java新手都会遇到这样一个问题,跟着教材敲代码,很容易,但是让他完整的实现一个应用项目却不会,下面这篇文章主要给大家介绍了关于Java项目部署的完整流程,需要的朋友可以参考下
    2022-07-07
  • RocketMQ中消费者的消费进度管理

    RocketMQ中消费者的消费进度管理

    这篇文章主要介绍了RocketMQ中消费者的消费进度管理,业务实现消费回调的时候,当且仅当此回调函数返回ConsumeConcurrentlyStatus.CONSUME_SUCCESS ,RocketMQ才会认为这批消息(默认是1条)是消费完成的,需要的朋友可以参考下
    2023-10-10
  • SpringBoot整合MQTT小结汇总

    SpringBoot整合MQTT小结汇总

    MQTT 客户端是运行 MQTT 库并通过网络连接到 MQTT 代理的任何设备,是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于 TCP/IP 协议上,由 IBM 于 1999 年发明,对SpringBoot整合MQTT相关知识感兴趣的朋友一起看看吧
    2022-01-01
  • springboot的LogbackLoggingSystem配置加载流程解析

    springboot的LogbackLoggingSystem配置加载流程解析

    这篇文章主要介绍了springboot的LogbackLoggingSystem配置加载流程源码分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • spring结合redis如何实现数据的缓存

    spring结合redis如何实现数据的缓存

    这篇文章主要介绍了spring结合redis如何实现数据的缓存,实现的目的目的不是加快查询的速度,而是减少数据库的负担,需要的朋友可以参考下
    2015-12-12
  • IDEA项目打包的几种方式总结

    IDEA项目打包的几种方式总结

    这篇文章主要介绍了IDEA项目打包的几种方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Java中IO流详解

    Java中IO流详解

    这篇文章主要介绍了java中的IO流详细解读,需要的朋友可以参考下
    2017-04-04

最新评论